jQuery $ .ajax用字符串数组调用Web Api

Log*_*n W 5 asp.net ajax jquery asp.net-mvc-4 asp.net-web-api

我试图通过jquery的$ .ajax调用.net Web Api方法.我进去的时候

var process ="first process",var nameArray = ["first","second"],var valueArray = ["val1","val2"]

然后:

 $.ajax({
url: jsonFeed,
data: {process: process, nameArray: nameArray, valueArray: valueArray},
    etc...
Run Code Online (Sandbox Code Playgroud)

我有一个ASP.NET Web Api方法:

  public string GetResponseToken(string process, string[] nameArray, string[] valueArray)
Run Code Online (Sandbox Code Playgroud)

当我运行一切时,我收到一条错误消息:

"无法将多个参数('nameArray'和'valueArray')绑定到请求的内容."

有谁知道这是为什么,或者我如何修复它来接受我的阵列?

nem*_*esv 11

Web.API参数/模型绑定器的工作方式与MVC不同.你需要告诉它你不要将查询字符串中的所有参数与[FromUri]属性绑定:

public string GetResponseToken(
      [FromUri]string process, 
      [FromUri]string[] nameArray, 
      [FromUri]string[] valueArray)
{
    //... 
}
Run Code Online (Sandbox Code Playgroud)

从长远来看(例如,如果您的请求类型是POST,上述方法将不起作用)您应该考虑使用参数对象而不是多个参数.

public string GetResponseToken([FromUri]ResponseTokenRequest request)
{
    //...
}

public class ResponseTokenRequest
{
    public string Process { get; set; }
    public string[] NameArray { get; set; }
    public string[] ValueArray { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以在以下文章中了解Wep.API参数绑定: