我有这样的课程
public class someList
{
public string strOne {get; set;}
public string strTwo {get; set;}
}
public class Entity
{
public string EntityMember;
public List<someList> entityList;
}
然后我有一个控制器和动作,
public ActionResult MyControllerAction(Entity objEntity)
如何使用JSON数据从浏览器发布表单,以便使用我的Entity对象进行映射。这是我提交表单的当前javascript函数,
function submitForm() {
var Entity = {};
var eList= new Array();
eList[0] = { strOne: "91", strTwo: "12" };
eList[1] = { strOne: "92", strTwo: "12" };
Entity = { EntityMember: "Member Value", entityList: eList };
$.post("/MyController/MyControllerAction", Entity);
}
但它不起作用。我能够获得EntityMember的值,但List对象不会来。
有什么想法吗?
答案 0 :(得分:1)
如果这是针对asp.net mvc 3,则实体需要是stringfied
$.ajax({
url: "/MyController/MyControllerAction",
type: "POST",
data: JSON.stringify(Entity),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
....
}
});
如果这是针对asp.net mvc 2,您还需要注册json提供者,请参考此link
你的工作不起作用的原因是jquery的内置序列化格式已被更改http://api.jquery.com/jQuery.param/
您需要将其设置为使用传统方式:
jQuery.ajaxSettings.traditional = true;
或使用不同的序列化方法。 (上面,我使用了stringify函数进行JSON绑定,这是JSON.org的json2.js的一部分)