web-dev-qa-db-ja.com

MVC 4のリクエストでクエリ文字列変数を取得するにはどうすればよいですか?

Web Apiを使った最初のMVC 4プロジェクトに取り組んでいます。

MVC 3では、次のようなクエリ文字列パラメーターを取得できます。

var unicornName = Request.Query["unicornName"];

しかし、MVC 4では、リクエストがHttpRequestBaseからHttpRequestMessageに移行し、Queryパラメーターがなくなったようです。さて、うーん、わかりました。どうすれば入手できますか。ウェブでいくつかの例を見つけましたが、それらは馬鹿げています。

このフェローが推奨 RequestUriのクエリ文字列を「&」で分割し、パラメータとペアを見つけます。 およびこの例 は、キーと値のペアのリストを返す新しいリクエストオブジェクトでGetQueryNameValuePairsメソッドを呼び出し、次にlinqを実行してキーと値を見つけることを示しています。とてもシンプルなものを手に入れるのは、実際にはこれほど逆ではあり得ません。何か不足していることを教えてください!

:モデルバインディングの方法が理解でき、アクションのメソッドparamsを介してクエリ文字列パラメーターを取り込む必要がありますが、まだ時がありますフィルターなどで、クエリ文字列変数をリクエストから(簡単に?)引き抜く必要がある場合。

10
Levitikon

これはあなたが探しているものかもしれません、

  var queryValues = Request.RequestUri.ParseQueryString();

https://stackoverflow.com/a/11729619/6819

25
Darrel Miller

Linqが本当に面倒な場合は、GetQueryNameValuePairs()の結果を辞書にラップするだけです。

var requestQuery = 
    list.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);

次に、いつものように文字列パラメータを取得できます。

var unicornName = requestQuery["unicornName"];
5
Robert Harvey