$(function () { $("#save").click(function () { var list = []; for (var i = 0; i < 2; i++) { var obj = {}; obj["Name"] = "Test" + i; obj["Age"] = 20 + i; list.push(obj); } $.post("@Url.Action("Save")", "list=" + JSON.stringify(list), function (text, status) { alert("Save successfully"); }); }); });
这是前台代码. 如果要使用Json数组传到后台的话. Json数组中的对象里的内容要和实际的类的属性相对应.
例如这里我使用 Obj["Name"] 和 Obj["Age"]. 是因为后台类是这样的。
public class PersonViewModel { public string Name { get; set; } public int Age { get; set; } }
然后后台是这样解析的.
[HttpPost] public ActionResult Save(string list) { //using Newtonsoft.Json; List<PersonViewModel> modelList = JsonConvert.DeserializeObject<List<PersonViewModel>>(list); return null; }
在前端页面上放置一个HiddenField,赋值给它,后端接收不就行了。至于解析,没有解析JS的引擎怕是没有办法了。
前端页面有一种类型叫 map类型,并且可以扩展的。键值对。这个你百度一下即可。取值和组织对象。这个你得自己来。和你的实体一样就行。后台控制器里直接用实体接受即可。这里不含验证。如果有必要,验证你得自己做!