[英]How do you pass a JSON object to an MVC action parameters?
我想通过
{"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true}
为了我的行动
public JsonResult Action(int id, string name, bool parameter2, bool parameter3)
{
//...
}
使用JQuery作为数据参数的ajax方法
$.ajax({
url: "target.aspx",
data: {"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true},
success: handleResponse
});
我可以在fiddler中看到我的JSON对象正在被发送,但它们没有被绑定到我的动作参数。 如何让它们绑定到参数?
我不想绑定到包含我的值的动作上的对象,即我不想要Action(MyCustomObjectToAcceptParameters json)我希望每个JSON属性绑定到动作的每个参数。
如果我将参数作为查询字符串传递一切正常,但JSON比一堆查询字符串值更容易构建/维护,所以我想要一些东西来取我的json并将它绑定到我的动作上的每个参数。 我不需要将复杂类型与数据库绑定,只需简单的字符串,整数和布尔值。
我看到@womp根据我的反馈删除了他的答案,所以这里是解决方案。 您可以传递JSON对象作为数据参数。 请看这里的例子。
$.ajax({
url: "target.aspx",
data: {parameter1: true, parameter2: false, parameter3: true},
success: handleResponse
});
womp给了你很好的答案,但是如果你需要在几个动作上做这个,或者你想要更高级的绑定到复杂的对象,这篇文章可能有所帮助:
实现自定义过滤器: http : //blogger.forgottenskies.com/?p = 252
使用自定义模型绑定器: http : //community.codesmithtools.com/blogs/tdupont/archive/2009/08/10/mvc-custom-json-binder.aspx
粘合剂/过滤器非常好。 为了更好地控制映射json名称< - >业务类属性,在属性上使用[DataMember]属性,在类上使用[DataContract] 。 请参见DataContractJsonSerializer 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.