ASP.NET MVC – QueryString値の取得

.net asp.net asp.net-mvc
ASP.NET MVC – QueryString値の取得

ASP.NET MVCの下では、ASP.NET Webフォームで行うのと同じ方法でQueryStringパラメータを選択する必要がありますか。 または、 `+ [AcceptVerbs(HttpVerbs.Get)] +`宣言が何らかの形で使用されますか?

  62  6


ベストアンサー

クエリ文字列パラメータは、単にアクションに引数を使用することで受け付けることができます。

public ActionResult Foo(string someValue, int someOtherValue) {...}

`+ …​ / someroute?someValue = abc&someOtherValue = 123 +`のようなクエリを受け入れます

それ以外の、あなたはより多くのコントロールのために直接リクエストを見ることができます。

98


Webフォームのように常に `+ Request.QueryString +`コレクションを使用できますが、MVCでそれらを処理し、パラメーターとして渡すこともできます。 これはより簡単で推奨される方法であり、入力データ型を自動的に検証します。

24


探しているものは

Request.QueryString["QueryStringName"]

そして、あなたは `+ @ +`を追加することでビューでそれにアクセスすることができます

今、私の例を見てください、、、私はQueryStringでURLを生成しました

 var listURL = '@Url.RouteUrl(new { controller = "Sector", action = "List" , name = Request.QueryString["name"]})';

listURLの値は `+ / Sector / List?name = value ‘+`です

そして、 `+ queryString +`が空の場合

listURLの値は `+ / Sector / List +`です

21


UpdateModel / TryUpdateModelがルート、クエリ、および必要なフォームパラメータを抽出するのと同じように、コントローラのValueProviderプロパティを使用することをお勧めします。 これにより、メソッドシグネチャが非常に大きくなり、頻繁に変更されることを防ぐことができます。 また、単体テストの間にValueProviderをコントローラに提供できるため、テストが少し簡単になります。

7


実際には2つの方法でMVCでクエリ文字列をキャプチャすることができます…​..

public ActionResult CrazyMVC(文字列knownQuerystring){

//これは、上記のController Action Methodパラメーターによってキャプチャーされた既知の照会ストリングです。myKnownQuerystring = knownQuerystring;

//これは私が謎の "unknown"クエリ文字列と呼んでいるものです。// Controllerはそれをキャプチャしていないので、わかりません。string myUnknownQuerystring = Request.QueryString ["unknownQuerystring"];

戻り値Content(myKnownQuerystring " - " myUnknownQuerystring);

}

これは両方のクエリ文字列をキャプチャします…​例えば:

/ CrazyMVC?knownQuerystring = 123

出力:123  -  456

なぜ彼らがそのように設計したのか私に聞かないでください。 個々のクエリ文字列に対してControllerアクションシステム全体を破棄し、URLのすべての文字列/エンコードされたファイルオブジェクトの動的なキャプチャリストをurl-form-encodingで取得したので、1回の呼び出しで簡単にアクセスできます。 。 もし可能であれば、たぶんここの誰かがそれを証明することができますか?

コントローラがクエリ文字列をどのようにキャプチャするのか私には意味がありませんが、クエリ文字列をキャプチャするほうがすぐに使えるよりも柔軟性があるということです。 だからあなたの毒を選ぶ…​.両方ともうまくいく。

1


タイトルとURLをコピーしました