2009-07-01 25 views

Respuesta

117

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" .

+0

De acuerdo, pero el parámetro de acción con el nombre "value1" podría estar presente. Por qué no? –

+2

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

+0

Levi es correcto. He solucionado la respuesta para aclarar a qué me refería. – Talljoe

3

Considere también utilizar T4MVC, que tiene los métodos de extensión AddRouteValue() y AddRouteValues() (consulte here).

1

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.

+0

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

Cuestiones relacionadas