我从 ASP.NET web 方法得到这个 JSON 响应
{"d":[{"__type":"KnockoutWebFormsTest.Item","Id":1,"Name":"Item1","Description":"项目 1 描述"},{"__type":"KnockoutWebFormsTest.项目","ID":2,"名称":"项目 2","描述":"项目 2 描述"}]}
然后使用KnockoutJS我可以用这段代码绑定数据,
Javascript:
function bindModel(data) {
var viewModel;
viewModel = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel);
}
HTML:
<tbody data-bind="foreach: d">
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: Name"></td>
</tr>
</tbody>
这使用了d
inforeach
循环的对象类型,但是现在我需要Item
在 foreach 循环中使用我的服务器对象类型,例如,
<tbody data-bind="foreach: Item">
我怎样才能做到这一点?
注意:这与我之前在SO中的问题有关
编辑 1:
服务器端代码 (C#)
[WebMethod]
public static List<Item> GetItems()
{
List<Item> itemlist = new List<Item>
{
new Item {Id = 1, Name = "Item1", Description = "Item 1 Description"},
new Item {Id = 2, Name = "Item2", Description = "Item 2 Description"}
};
return itemlist;
}
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
编辑 2:
从此 Javascript 代码
var jsonObject;
jsonObject = ko.mapping.fromJSON(data);
console.log(data);
console.log(jsonObject);
console.log(jsonObject.d);
我明白了
数据
{"d":[{"__type":"KnockoutWebFormsTest.Item","Id":1,"Name":"Item1","Description":"项目 1 描述"},{"__type":"KnockoutWebFormsTest.项目","ID":2,"名称":"项目 2","描述":"项目 2 描述"}]}
json对象
>Object {d: function, __ko_mapping__: Object}
>__ko_mapping__: Object
>d: Object[0]
>__proto__: Object
jsonObject.d
[]