1. ホーム
  2. c#

[解決済み] MVC Razor マークアップからクエリ文字列パラメータを取得する方法とは?

2023-03-15 13:54:06

質問

Razor のマークアップで URL パラメータをチェックしたいのですが、どのようにすればよいのでしょうか?例えば、以下のようなことをするにはどうしたらよいでしょうか。

<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">

どのように解決するのですか?

類似スレッド

<div id="wrap" class=' @(ViewContext.RouteData.Values["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>

01-10-2014 を編集。 この質問はとても人気があるので、この回答は改善されました。

上記の例では RouteData からしか値を取得しないので、登録されたルートによって捕捉されたクエリストリングのみからです。クエリストリングの値を取得するためには、現在の HttpRequest . 最速の方法は、(TruMan が指摘したように) `Request.Querystring' を呼び出すことで、答えはこうなるはずです。

<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>

また RouteValuesとQueryStringのMVC?

03-05-2019を編集しました。 上記の解決策は .NET Framework で動作しています。

他の方が指摘されているように、クエリ文字列の値を .NET コア を使用する必要があります。 Query オブジェクトから Context.Request のパスになります。つまり、こうなります。

<div id="wrap" class=' @(Context.Request.Query["iframe"] == new StringValues("1") ? /*do sth*/ : /*do sth else*/')> </div>

を使っていることに注意してください。 StringValues("1") を使っていることに注意してください。 Query が返す StringValues の代わりに、純粋な string . これは、私が見つけたこのシナリオのためのクリーンな方法です。