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 に答える