Ich möchte den URL-Parameter in meinem Razor-Markup überprüfen. Wie mache ich zum Beispiel so etwas:
<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: Da diese Frage so beliebt ist, wurde diese Antwort verbessert.
Das obige Beispiel erhält nur die Werte von RouteData
, also nur von den Querzeichenringen, die von einer registrierten Route abgefangen werden. Um den Wert für die Querzeichenfolge zu erhalten, müssen Sie zur aktuellen HttpRequest
gelangen. Der schnellste Weg ist, indem Sie (wie TruMan darauf hingewiesen hat) `Request.Querystring 'anrufen. Die Antwort sollte also lauten:
<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
Sie können auch RouteValues vs QueryString MVC überprüfen?
Wenn Sie .net core 2.0 verwenden, wäre dies
Context.Request.Query["id"]
Verwendungsbeispiel:
<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
Ich denke, eine elegantere Lösung ist die Verwendung des Controllers und des ViewData-Wörterbuchs:
//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>
}
Es wurde vorgeschlagen, dies als Antwort zu posten, da einige andere Antworten Fehler enthalten, wie z.
Verwenden Sie einfach die folgenden Arbeiten:
Request.Query["queryparm1"]
Verwendungsbeispiel:
<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
Für Asp.net Core 2
ViewContext.ModelState["id"].AttemptedValue
Nichts von den Antworten, die für mich funktionierten, bekam ich "HttpRequestBase" enthält keine Definition für "Abfrage", aber das hat funktioniert:
HttpContext.Current.Request.QueryString["index"]