如何解决将复杂的JSON映射到MVC Action参数中的列表
| 我有这样的课程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对象没有出现。
有任何想法吗?
解决方法
如果这是用于asp.net mvc 3,则需要对实体进行字符串化
$.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提供程序,请参考此链接
您无法使用的原因是jquery的内置序列化格式已更改http://api.jquery.com/jQuery.param/
您将需要将其设置为使用传统方式:
jQuery.ajaxSettings.traditional = true;
或使用其他序列化方法。 (在上面,我使用stringify函数进行JSON绑定,这是JSON.org \的json2.js的一部分)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。