C# jQuery Ajax调用MVC的数组参数为空
我有一个简单的MVC api方法:C# jQuery Ajax调用MVC的数组参数为空,c#,jquery,arrays,asp.net-mvc,asp.net-web-api,C#,Jquery,Arrays,Asp.net Mvc,Asp.net Web Api,我有一个简单的MVC api方法: [System.Web.Http.HttpPost] // Important: it is not System.Web.Mvc.HttpPost public void MyMethod(object[] arr) { ... } 我使用以下javascript调用它: $.ajax({ url: url, method: "POST", data: { arr: ['1','2']}, dataType: "j
[System.Web.Http.HttpPost] // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod(object[] arr)
{
...
}
我使用以下javascript调用它:
$.ajax({
url: url,
method: "POST",
data: { arr: ['1','2']},
dataType: "json",
traditional: true,
error: function (e) {
...
},
success: function (res) {
...
}
});
调用成功,但C#代码中的arr值为空数组(字符串[0])。我发现多个这样的电话样本建议主要添加传统的:true,但它仍然不起作用。我还尝试提供不同格式的数据,例如:
- 数据:{arr:['1','2']}
- 数据:{['1','2']}
- 数据:['1','2']
- stringify(['1','2'])
这些都不管用。想法?您需要指定
[FromBody]
参数:
[System.Web.Http.HttpPost] // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod([FromBody] object[] arr)
{
...
}
您的代码应该是:
$.ajax({
url: url,
method: "POST",
data: ['1','2'],
dataType: "json",
traditional: true,
error: function (e) {
...
},
success: function (res) {
...
}
});
如果指定一个键/值,如{Arr:['1',2']}
,则应为正文创建一个结构:
class MyMethodPostJson
{
public List<string> Arr;
}
可能重复的
[System.Web.Http.HttpPost] // Important: it is not System.Web.Mvc.HttpPost
public void MyMethod([FromBody] MyMethodPostJson arr)
{
...
}