5

私がやろうとしているのは、/api/calculator のような API リクエストを行うことです。1 =7.00& 2 =9.99& 3 =5.50& 4 =45.76 など コントローラはどのようにリクエスト データを取得できますか? クエリ文字列のキー/コードは、1 から 1000 までの整数です。クエリ文字列では、1000 個のコードの一部である可能性がありますが、すべてである必要はありません。値の部分は double です。

私がうまくいくと思う1つの方法はStupidObject、1000個のプロパティを持つモデルオブジェクト(例)を作成することです(intは許可されたプロパティ名ではないため、コードにはp1、p2、..p1000などの名前のプロパティを使用する必要があります)ModelBinder. 次に、コントローラーの場合、次のようなものを使用できますがGetCalcResult(StupidObject obj){...}、それはエレガントなソリューションのようには思えません:)

私はコントローラーを試しGetCalcResult([FromURI]Dictionary<int, double> dict){...}ましたが、dictは常にnullです。また[FromURI]、エラーが発生しません。List<KeyValuePair<int, double>>同じ結果のコントローラーパラメーターとしても試しました。

誰かが私を正しい方向に向けたり、実際の例を教えてもらえますか?

4

1 に答える 1

13

1 つの方法は、値をパラメーターとして渡そうとするのを避け、単純に行うことです。

  var queryValues = Request.RequestUri.ParseQueryString();

あなたのアクションメソッドで。QueryValues は、クエリ パラメーターにアクセスするために反復できる NameValueCollection になります。

本当にパラメーターを使用したい場合は、 [FromUri]FormDataCollection 型のパラメーターを使用するとうまくいく可能性があります。

于 2012-07-30T21:08:54.710 に答える