web-dev-qa-db-ja.com

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

RazorマークアップのURLパラメーターを確認したい。たとえば、どのように私はこのようなことをしますか:

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

類似のスレッド

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

EDIT 01-10-2014:この質問は非常に人気があるため、この回答は改善されました。

上記の例は、RouteDataからのみ値を取得するため、登録されたルートによってキャッチされたクエリ文字列からのみ取得します。クエリ文字列値を取得するには、現在のHttpRequestに到達する必要があります。最も早い方法は、(TruManが指摘したように) `Request.Querystring 'を呼び出すことです。したがって、答えは次のようになります。

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

RouteValues vs QueryString MVC? も確認できます

EDIT 03-05-2019:上記のソリューションは。NET Frameworkで機能しています。
他の人が指摘したように、。NET Coreでクエリ文字列値を取得したい場合は、Context.RequestからQueryオブジェクトを使用する必要があります道。したがって、次のようになります。

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

Queryが純粋なStringValuesではなくstring構造体を返すため、ステートメントでStringValues("1")を使用していることに注意してください。それは私が見つけたこのscenerioの方法をきれいにします。

96
Mariusz

.net core 2.0を使用している場合、これは次のようになります。

Context.Request.Query["id"]

使用例:

<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
20
Florian Schaal

よりエレガントなソリューションは、コントローラーとViewDataディクショナリーを使用することだと思います。

//Controller:
public ActionResult Action(int IFRAME)
    {
        ViewData["IsIframe"] = IFRAME == 1;
        return View();
    }

//view
@{
    string classToUse = (bool)ViewData["IsIframe"] ? "iframe-page" : "";
   <div id="wrap" class='@classToUse'></div>
 }
5
YavgenyP

これを回答として投稿することをお勧めします。これは、「現在のコンテキストにコンテキストという名前が存在しない」などのエラーが他の回答によって発生しているためです。

次の機能を使用するだけです:

Request.Query["queryparm1"]

サンプル使用法:

<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
5
x5657

私の答えはどれもうまくいきませんでした。「「HttpRequestBase」には「Query」の定義が含まれていません」と表示されていましたが、これはうまくいきました:

HttpContext.Current.Request.QueryString["index"]
2
Rolando Retana

Asp.net Core 2の場合

ViewContext.ModelState["id"].AttemptedValue
1