繁体   English   中英

如何将JSON对象传递给MVC操作参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM