Я отображаю данные из таблицы, используя нокаут JS.Но есть показание "Элемент модели, переданный в словарь, имеет тип 'System.Web.Mvc.JsonResult', но для этого словаря требуется элемент модели типа 'System.Collections.Generic.IEnumerable`1 [KnockOutDemo.Models.State] «.ошибка.
Вот мой js-код в виде KOIndex.js
$(function () {
ko.applyBindings(modelView);
modelView.viewStates();
});
var modelView = {
States = ko.observableArray([]),
viewStates: function () {
var thisobj = this;
try {
$.ajax({
url: '/State/Index',
type: 'GET',
dataType: 'json',
contentType: 'application/json',
success: function (data) {
thisObj.States(data);
},
error: function (err) {
alert(err.status + " : " + err.statusText);
}
});
}
catch (e) {
window.location.href = '/State/Index';
}
}
};
Файл контроллера
public class StateController : Controller
{
private Database1Entities db = new Database1Entities();
// GET: State
public ActionResult Index()
{
return View(Json(db.States.ToList(), JsonRequestBehavior.AllowGet));
}
}
Index.cshtml
@model IEnumerable<KnockOutDemo.Models.State>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
State Name
</th>
<th>Action</th>
</tr>
<tbody data-bind="foreach : States">
<tr>
<td data-bind="text : StateName"></td>
<td>
<a data-bind="attr : { 'href' : '@Url.Action("Edit", "State")/' + StateID }" class="btn-link">Edit</a>
<a data-bind="attr: { 'href': '@Url.Action("Delete", "Home")/' + StateID }" class="btn-link">Delete</a>
</td>
</tr>
</tbody>
</table>
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/Knockout/K?OIndex.js"></script>
<script src="~/Scripts/knockout-3.5.0.js"></script>