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}">
<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?
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>
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>
}
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>
Pour Asp.net Core 2
ViewContext.ModelState["id"].AttemptedValue
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"]