2009-07-01 3 views

Répondre

117

Les valeurs transmises qui ne font pas partie de l'itinéraire seront utilisés comme paramètres querystring:

return this.RedirectToAction 
    ("myActionName", new { value1 = "queryStringValue1" }); 

renverrait:

/controller/myActionName?value1=queryStringValue1 

En supposant qu'il n'y a pas le paramètre d'itinéraire nommé « valeur1 » .

+0

D'accord, mais un paramètre d'action avec le nom "valeur1" pourrait être présent. Pourquoi pas? –

+2

Je pense que la réponse signifiait "en supposant qu'il n'y ait pas de paramètre de route nommé 'value1'". Sinon, la valeur irait dans la place du paramètre route dans l'URL générée, par ex. {controller}/{action}/{value1} deviendrait/controller/myActionName/queryStringValue1 plutôt que/controller/myActionName? value1 = queryStringValue1. – Levi

+0

Levi est correct. J'ai corrigé la réponse pour clarifier ce que je voulais dire. – Talljoe

3

Pensez également à utiliser T4MVC, qui a les méthodes d'extension AddRouteValue() et AddRouteValues() (voir here).

1

Ne faites pas la même erreur que je faisais. Je traitais 404 erreurs et je voulais rediriger avec 404=filename dans la chaîne de requête, c'est-à-dire mysite.com?404=nonExistentFile.txt.

Les clés QueryString ne peuvent pas commencer par des nombres. Passer de 404 à FileNotFound a résolu mon problème, c'est-à-dire mysite.com?FileNotFound=nonExistentFile.txt.

+0

Ce n'est pas [généralement vrai] (https://stackoverflow.com/a/12465767/264628). Ce n'est pas vrai non plus spécifiquement pour .NET MVC (au moins en v5). Rappelez-vous juste que les clés sont des cordes même si elles ne sont composées que de chiffres. Vous devez accéder à une clé numérique comme suit: 'HttpContext.Request.QueryString [" 404 "]'. – BrianS

Questions connexes