Quiero comprobar el parámetro de URL en mi maquinilla de Afeitar de marcado. Por ejemplo, ¿cómo puedo hacer algo como esto:

<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
InformationsquelleAutor TruMan1 | 2012-06-28

6 Comentarios

  1. 96

    Similar hilo

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

    EDITAR 01-10-2014:
    Desde esta pregunta es tan popular esta respuesta ha sido mejorado.

    El ejemplo anterior sólo obtener los valores de RouteData, de modo que sólo a partir de las cadenas de consulta que son capturados por algunos registrado ruta. Para obtener la cadena de valor tiene para llegar a la actual HttpRequest. La forma más rápida es llamar por teléfono (como TruMan señalado) `Solicitud.Querystring’, por lo que la respuesta debe ser:

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

    También puede comprobar RouteValues vs QueryString MVC?

    EDITAR 03-05-2019:
    La solución anterior es trabajar para .NET Framework.

    Como otros apuntaron si desea obtener valor de cadena de consulta en .NET Core tienes que utilizar Query objeto de Context.Request camino. Por lo tanto sería:

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

    Por favor, nótese que estoy usando StringValues("1") en la instrucción, ya Query devuelve StringValues struct lugar de puro string. Que cleanes camino para este scenerio que he encontrado.

    • Gracias por los consejos. Esto funcionó: <div id=»wrap» class=»@(Solicitud.QueryString[«iframe»] == «1» ? «iframe» : string.Vacío)»>
    • Me gustaría añadir @TruMan1 ‘s comentario a su respuesta. En mi caso, los valores no estaban en la ruta de datos (utilizando nop-commerce), pero eran accesibles a través de la solicitud.
    • respuesta actualizada gracias por la sugerencia.
    • Para aclarar – lo mejor de Solicitud de uso.QueryString por ejemplo, si la vista se muestra como una consecuencia de una redirección
  2. 20

    Si usted está utilizando .net core 2.0, esto sería:

    Context.Request.Query["id"]

    El ejemplo de uso:

    <a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
    • Esto le da a ‘El nombre de Contexto no existe en el contexto actual’. Sólo mediante Solicitud.Consulta[«queryparm1»] funciona aunque.
    • usted debe enviar su comentario como una respuesta, como era la única solución que realmente funciona para mí!
    • Hecho. Me alegro de que trabajó para usted!
  3. 5

    Creo que una solución más elegante es utilizar el controlador y el diccionario 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>
     }
    • Yo no lo creo
    • Esta opinión es compartida a través de muchos de los controladores. Creo que esto sería un poco lioso hacerlo como esta en lugar de poner la lógica directamente en la máquina de Afeitar de marcado. También preveo que voy a tener que hacer esto en vistas parciales así.
    • Una solución más elegante es devolverlo como parte de un ViewModel return View(new SomeViewModel{ IsIFrame = IFrame });
  4. 5

    Se sugirió publicar esto como una respuesta, debido a que algunas otras respuestas están dando errores como ‘El nombre de Contexto no existe en el contexto actual’.

    Sólo el uso de las siguientes obras:

    Request.Query["queryparm1"]

    El ejemplo de uso:

    <a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
    • Que no trabajo para mí, pero este hecho: la Solicitud.QueryString
  5. 3

    Noneof las respuestas trabajó para mí, yo estaba «‘HttpRequestBase’ no contiene una definición para ‘Consulta'», pero esto no funcionó:

    HttpContext.Current.Request.QueryString["index"]
  6. 1

    Para Asp.net Core 2

    ViewContext.ModelState["id"].AttemptedValue
    • Sólo voy a añadir que aunque se dice que AttempValue – si el parámetro no existe en la cadena de consulta se obtendrá una excepción, así que usted debe comprobar primero: @if (ViewContext.ModelState["id"] != null)...

Dejar respuesta

Please enter your comment!
Please enter your name here