5

我正在尝试通过 jquery 的 $.ajax 调用 .net Web Api 方法。当我通过

var process = "第一个进程", var nameArray = ["first", "second"], var valueArray = ["val1", "val2"]

进而:

 $.ajax({
url: jsonFeed,
data: {process: process, nameArray: nameArray, valueArray: valueArray},
    etc...

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

  public string GetResponseToken(string process, string[] nameArray, string[] valueArray)

当我运行所有内容时,我收到一条错误消息:

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

有谁知道这是为什么,或者我如何修复它以接受我的数组?

4

1 回答 1

11

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

public string GetResponseToken(
      [FromUri]string process, 
      [FromUri]string[] nameArray, 
      [FromUri]string[] valueArray)
{
    //... 
}

从长远来看(例如,如果您的请求类型是 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; }
}

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

于 2012-10-17T19:20:06.650 回答