En asp.net mvc, estoy utilizando este código:cómo agregar valores de querystring con el método RedirectToAction?
RedirectToAction("myActionName");
quiero pasar algunos valores a través de la cadena de consulta, ¿cómo puedo hacer eso?
En asp.net mvc, estoy utilizando este código:cómo agregar valores de querystring con el método RedirectToAction?
RedirectToAction("myActionName");
quiero pasar algunos valores a través de la cadena de consulta, ¿cómo puedo hacer eso?
Cualquier valor que se pasan que no forman parte de la ruta serán utilizados como parámetros de cadena de consulta:
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
regresarían:
/controller/myActionName?value1=queryStringValue1
Suponiendo que no hay parámetro de ruta denominada "valor1" .
Considere también utilizar T4MVC, que tiene los métodos de extensión AddRouteValue()
y AddRouteValues()
(consulte here).
No cometa el mismo error que estaba cometiendo. Estaba manejando errores 404 y quería redireccionar con 404=filename
en la cadena de consulta, es decir, mysite.com?404=nonExistentFile.txt
.
QueryString Keys no puede comenzar con números. Cambiar de 404
a FileNotFound
resolvió mi problema, es decir, mysite.com?FileNotFound=nonExistentFile.txt
.
Esto no es [generalmente cierto] (https://stackoverflow.com/a/12465767/264628). Tampoco es cierto específicamente para .NET MVC (al menos en v5). Solo recuerde que las claves son cuerdas incluso si solo consta de números. Tendría acceso a una tecla numérica de la siguiente manera: 'HttpContext.Request.QueryString [" 404 "]'. – BrianS
De acuerdo, pero el parámetro de acción con el nombre "value1" podría estar presente. Por qué no? –
Creo que la respuesta significaba "suponiendo que no hay un parámetro de ruta llamado 'valor1'". De lo contrario, el valor iría al lugar del parámetro de ruta en la URL generada, p. {controller}/{action}/{value1} se convertiría en/controller/myActionName/queryStringValue1 en lugar de/controller/myActionName? value1 = queryStringValue1. – Levi
Levi es correcto. He solucionado la respuesta para aclarar a qué me refería. – Talljoe