web-dev-qa-db-fra.com

Comment obtenir un paramètre de chaîne de requête à partir du balisage MVC Razor?

Je souhaite vérifier le paramètre d'URL dans mon balisage Razor. Par exemple, comment puis-je faire quelque chose comme ceci:

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

Fil similaire

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

EDIT 01-10-2014: Cette question est si populaire que sa réponse a été améliorée. 

L'exemple ci-dessus n'obtiendra que les valeurs de RouteData, donc uniquement des chaînes de requête capturées par un itinéraire enregistré. Pour obtenir la valeur de chaîne de requête, vous devez accéder à la variable HttpRequest actuelle. Le moyen le plus rapide est d’appeler (comme TruMan l’a souligné) `Request.Querystring '. 

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

Vous pouvez également vérifier RouteValues ​​vs QueryString MVC?

88
Mariusz

Si vous utilisez .net core 2.0, ce serait:

Context.Request.Query["id"]

Utilisation de l'échantillon:

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

Je pense qu'une solution plus élégante consiste à utiliser le contrôleur et le dictionnaire 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

Il a été suggéré d’afficher ceci comme réponse, car certaines autres réponses donnent des erreurs telles que "Le nom du contexte n’existe pas dans le contexte actuel".

Juste en utilisant les œuvres suivantes:

Request.Query["queryparm1"]

Exemple d'utilisation:

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

Pour Asp.net Core 2

ViewContext.ModelState["id"].AttemptedValue
0
Pradip Rupareliya

Aucune des réponses ne fonctionnait pour moi, je devenais "" HttpRequestBase "ne contient pas de définition pour" Requête "", mais cela fonctionnait:

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