2010-04-08 151 views
5

我想通过如何将JSON对象传递给MVC操作参数?

{"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true} 

为了我的行动

public JsonResult Action(int id, string name, bool parameter2, bool parameter3) 
{ 
    //... 
} 

使用JQueries使用JSON作为数据参数AJAX方法

$.ajax({ 
    url: "target.aspx", 
    data: {"id":1, "name":"stackoverflow", "parameter2":false, "parameter3":true}, 
    success: handleResponse 
}); 

我可以在提琴手我的JSON对象看正在发送,但他们没有被绑定到我的动作参数。我如何让他们绑定到参数?

我不想绑定到包含我的值的操作上的对象,即我不想要操作(MyCustomObjectToAcceptParameters json)我希望每个JSON属性绑定到操作的每个参数。

如果我将参数作为查询字符串传递,但一切正常,但JSON比查询字符串值更容易构建/维护,因此我希望将某些内容带入我的json并将其绑定到我的操作的每个参数。我不需要将复杂类型与数据成员绑定,只需简单的字符串,整数和布尔值。

+0

您可以发布您当前的jQuery调用代码? – tzaman 2010-04-08 21:55:44

+0

您是否尝试过没有变量名称上的引号?请参阅@ Ryan的回答。这应该做你想做的(如果我理解正确的话) – SlackerCoder 2010-04-09 14:14:00

回答

2

我看到@womp去除根据我的反馈意见,以便他在这里的答案是解决方案。你可以通过一个JSON对象作为数据参数。例子见here

$.ajax({ 
    url: "target.aspx", 
    data: {parameter1: true, parameter2: false, parameter3: true}, 
    success: handleResponse 
}); 
+0

如果这是你做了什么,你可以使用Firebug,以确认该参数实际上是在请求?或者你可以在你的控制器中设置一个断点并检查HttpContext。 – Ryan 2010-04-09 03:19:57

+0

这是我如何通过我的参数,但我怎么让他们绑定到我的行动的参数(不动作参数的对象); – TimTam 2010-04-09 12:24:44

+1

您是否使用默认模型联编程序?这应该只是工作。 – Ryan 2010-04-09 15:00:51

0

粘合剂/过滤器非常好。有关映射JSON名称<更精细的控制 - >业务类属性,使用[数据成员]上性能[DataContract]上类属性,和。见DataContractJsonSerializer

+0

这看起来像绑定对象的属性。我想绑定到动作的参数(所以我不需要创建另一个对象) – TimTam 2010-04-09 12:26:58

相关问题