RazorマークアップのURLパラメータを確認したい。たとえば、次のようなことを行うにはどうすればよいですか。
<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
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>
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 CoreQuery
でクエリ文字列値を取得したい場合は、パスからオブジェクトを使用する必要がありContext.Request
ます。したがって、次のようになります。
<div id="wrap" class=' @(Context.Request.Query["iframe"] == new StringValues("1") ? /*do sth*/ : /*do sth else*/')> </div>
pure ではなく struct を返すStringValues("1")
ため、ステートメントで使用していることに注意してください。それは私が見つけたこのシーンの方法をきれいにします。Query
StringValues
string
より洗練された解決策は、コントローラーと 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>
}