it-swarm.com.de

Wie kann ich den Abfragezeichenfolgeparameter von MVC Razor Markup erhalten?

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}">
58
TruMan1

Ähnliche Themen

<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?

88
Mariusz

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>
16
Florian Schaal

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>
 }
5
YavgenyP

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>
5
x5657

Für Asp.net Core 2

ViewContext.ModelState["id"].AttemptedValue
0

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"]
0
Rolando Retana