我正在使用 MVC 4,并且一直在努力将 Json 从由 Knockout.Js 构建的客户端返回到我的控制器操作。Json 可以正常发布并在 Fiddler 中检查它似乎一切正常,但是当 JsonResults Action 绑定它时,生成的对象没有 Json 中存在的 ICollection。
我的客户 ajax 帖子如下所示:
$.ajax({
url: location.href,
type: 'POST',
data: ko.toJSON(this.Orders),
dataType: "json",
contentType: "application/json charset=utf-8",
success: function (data) {
alert(data.Message);
}
});
这会产生以下 Json:
[{"Number":1,"Properties":{"Id":2,"Title":"#333"},"UnitCost":"20"}]
我在服务器端的 viewModel 结构是这样的:
订购型号
public class VmOrder
{
public int Number
{
get;
set;
}
public ICollection<VmProperty> Properties
{
get;
set;
}
public decimal UnitCost
{
get;
set;
}
}
物业模型
public class VmProperty
{
public int Id
{
get;
set;
}
public string Title
{
get;
set;
}
}
最后我的控制器看起来像这样:
[HttpPost]
public JsonResult Order(ICollection<VmOrder> Orders)
{
// further server-side validation, save to database, etc
return Json("Saved", "");
}
虽然我得到了 Number 和 UnitCost,但 Properties 集合为空,有什么想法吗?