使用来自服务器的默认数据初始化viewmodel

时间:2011-07-14 13:11:53

标签: asp.net-mvc-3 knockout.js

我们如何在首次调用页面时在knockoutjs视图模型中填充数据?也就是说,第一次呈现视图时。

我的服务器View Model类包含一个对象列表。我希望使用此值初始化knockoutjs视图模型属性。

我尝试了以下代码,但失败并出现以下错误:

  

在序列化类型的对象时检测到循环引用。

这是我的代码:

var mylist = @Html.Raw(Json.Encode(Model.list));

 var viewModel = {
     list: ko.observableArray(myList),
 };

标准下拉列表使用相同的属性。看起来像序列化问题?

<div class="editor-field">
@Html.DropDownListFor(model => model.list, new SelectList(Model.list, "id", "name"), "-- select --")
</div>

1 个答案:

答案 0 :(得分:2)

您应该使用没有循环引用的视图模型,否则您将无法对其进行JSON序列化(Json.Encode(Model.list))。我想这个Model.list属性是一些对象的集合,它们之间有循环引用。如果您希望JSON序列化模型,则必须从视图模型中删除导致这些循环引用的属性。