我正在寻找一种通过JSON将对象数组发布到MVC3的解决方案。
我正在处理的示例代码:http : //weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net- mvc-3-preview-1.aspx
JS:
var data = { ItemList: [ {Str: 'hi', Enabled: true} ], X: 1, Y: 2 }; $.ajax({ url: '/list/save', data: JSON.stringify(data), success: success, error: error, type: 'POST', contentType: 'application/json, charset=utf-8', dataType: 'json' });
ListViewModel.cs:
public class ListViewModel { public List<ItemViewModel> ItemList { get; set; } public float X { get; set; } public float Y { get; set; } }
ItemViewModel.cs:
public class ItemViewModel { public string Str; // originally posted with: { get; set; } public bool Enabled; // originally posted with: { get; set; } }
ListController.cs:
public ActionResult Save(ListViewModel list) { // Do something }
POST的结果:
将list设置为ListViewModel。设置 其X和Y属性。设置 基础的ItemList属性 。ItemList包含一个项目, 该项目应为未初始化。Str为null,Enabled为false。
换句话说,这就是我从MVC3的模型绑定中得到的结果:
list.X == 1 list.Y == 2 list.ItemList != null list.ItemList.Count == 1 list.ItemList[0] != null list.ItemList[0].Str == null
MVC3 JsonValueProvider似乎不适用于复杂对象。我该如何工作?我是否需要修改现有的MVC3 JsonValueProvider并对其进行修复?如果是这样,我如何获得它并在MVC3项目中替换它?
MVC3 RC2JSON发布绑定未正常工作 未设置他的内容类型-它在我的代码中设置。
如何使用JSON,jQuery将复杂对象数组发布到ASP.NET MVCController? 这个可怜的家伙不得不写一个JsonFilter只是为了解析一个数组。我宁愿避免的另一种攻击。
那么,我该如何实现呢?
问题在于,列表中的模型中的属性没有在其公共属性上获得/设置。换句话说,MVC3的自动JSON绑定仅适用于具有get和set属性的对象属性。
这不会绑定:
public string Str;
这将绑定:
public string Str { get; set; }