使用Razor在ASP.net MVC4中进行KnockoutJs

时间:2013-12-26 16:51:18

标签: asp.net asp.net-mvc asp.net-mvc-4 razor knockout.js

我正在尝试将我的MVC应用程序转换为使用knockoutjs,我在我的视图中有这个代码:

var itemsCount = 0;
<div class="boxes-container">
@foreach (ItemModel i in Model.Items)
{
   if (itemsCount >= Model.DisplayCount)
   {
      @Html.Raw("</div><div class='boxes-container'>")
      itemsCount = 0;
   }
   Html.RenderPartial("PartialItemView", i);
   itemsCount++;
}
</div>

现在,淘汰赛我有类似的东西

this.Items = ko.observableArray(tmp.Items); // [Object { field1="52", field2="56", arr=[1], more...},Object { field1="52", field2="56", arr=[1], more...},Object { field1="52", field2="56", arr=[1], more...}]
this.DisplayCount = ko.observable(tmp.DisplayCount) // 3

如何使用此数据更新我的第一个代码?

1 个答案:

答案 0 :(得分:0)

在关闭body-tag之前添加到您的视图中:

<script type="text/javascript">
    // our model data

    var data = @Html.Raw(JsonConvert.SerializeObject(Model));

    // start knockout

    var model = ko.mapping.fromJS(data);
    ko.applyBindings(model);
</script>

然后你可以使用你的模型与knockout迭代每个项目:

<div data-bind="foreach: Items">
    ...
</div>

确保通过包管理器添加对NewtonSoft.Json的引用:

PM> install-package Newtonsoft.Json