0

という名前の WebApi コントローラーSrchControllerには、以下に示す概念実証のアクション/メソッドがあります。

URLを操作して、このメソッド/アクションを呼び出したい(何と呼ぶか​​わかりません)。テスト目的で。したがって、これはモデルバインディングを使用するという印象を受けました。

ブラウザのアドレスを入力すると、基準の値がメソッドに設定されることを期待していました[mysiteroot]/api/srch/TestResults?criteria.name = "hello"

[HttpGet]
public IEnumerable<ParcelResultItemViewModel> TestResults(SimpleViewModel criteria)
{
    //check value of criteria....it is always null. <-- i'm expecting name = "hello"
    //do stuff here
    return something;
} 

私の質問は、この質問と密接に関連しています Web APIでオプションのクエリ文字列パラメーターを処理する方法 Darinは、期待どおりに機能するはずだと述べています。何が間違っている可能性がありますか?

webapi ルート

 public static void Register(HttpConfiguration config)
        {

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }

            );    
        }

アップデート

エラー メッセージは表示されません。メソッドに渡されるビューモデルの値は単に null です。

4

1 に答える 1

1

SimpleViewModelURL パラメーターは、クラスのプロパティに基づいて名前を付けるcriteria必要があります。ここの部分は必要ありません。さらに、クエリ文字列は別の方法で構築されます-二重引用符とスペースなし.

全体として、URL は次のようになります。

[mysiteroot]/api/srch/TestResults?name=hello

または、複数のパラメーターの場合:

[mysiteroot]/api/srch/TestResults?name=hello&address=someaddress

つまり、ここでも、SimpleViewModelプロパティがnameand であると仮定しますaddress(もちろんケース固有ではありません)。サーバー側からはすべて問題ないように見えるので、正しい URL の使用を開始するとすぐに、すべてが期待どおりに機能するはずです。

于 2013-07-29T13:40:26.723 に答える