2013-03-26 64 views
2

我想要做的是将一个字符串/整数数组传递给mvc操作方法。 但数据总是返回为空,我做错了什么?JQuery发布数据到MVC操作方法?

MVC控制器

[HttpPost] 
public ActionResult MyAction(List<string> ids) 
{ 
    // do something with array 
    // But it's null 
     return View(); 
} 

JQuery的

$.post("/MyController/MyAction", JSON.stringify(ids), function() { alert("woohoo"); }, "application/json"); 

数据被派驻到行动结果

["156"] 

回答

3

尝试:

... JSON.stringify({ ids : ids }), ... 

我很确定模型联编程序不确定列表/数组是否应该被绑定。

考虑:

[HttpPost] 
public ActionResult MyAction(List<string> ids, List<string> blah) 
{ 
} 

如果JSON作为只是值的数组,其参数做绑定太过去了? JSON可能比FORMS提交复杂得多,所以它也需要更多的定义。

例如,以下内容适用于以前的考虑。

{ 
    ids : ["asdf","asdf"], 
    blah : ["qwer", "qwer"] 
} 

更新来进行

为了发送JSON正确下面Ajax调用需要:

$.ajax({ 
    type: "POST", 
    url: "/Home/Index", 
    data: JSON.stringify(ids), 
    contentType: "application/json; charset=utf-8" 
}); 

在后(您指定application/json)最后一个参数是什么期待从服务器回来。默认情况下,$ .Post将执行表格编码(application/x-www-form-urlencoded)contentType,该类型似乎被硬编码到快捷方式中。要设置contentType,您必须使用长手版本$ .ajax。

+0

我已经尝试过了,仍然会返回为空{“ids”:[“156”]} – aryaxt 2013-03-26 21:12:03

+0

对不起,您还必须指定内容类型。更新答案。 – 2013-03-26 21:28:01

+0

我已经在我的代码中,我开始并行(虚拟机),现在一切正常。太ba我不能删除问题 – aryaxt 2013-03-26 21:44:44