dans asp.net-mvc, je suis en train d'utiliser RedirectToAction("myActionName");
Je veux passer certaines valeurs via la chaîne de requête, comment faire ?
dans asp.net-mvc, je suis en train d'utiliser RedirectToAction("myActionName");
Je veux passer certaines valeurs via la chaîne de requête, comment faire ?
Toutes les valeurs transmises qui ne font pas partie de l'itinéraire seront utilisées comme paramètres de la chaîne de recherche :
return this.RedirectToAction
("myActionName", new { value1 = "queryStringValue1" });
Je reviendrais :
/controller/myActionName?value1=queryStringValue1
En supposant qu'il n'y a pas de paramètre de route nommé "valeur1".
Pensez également à utiliser T4MVC, qui dispose des méthodes d'extension suivantes AddRouteValue()
et AddRouteValues()
(voir ici ).
// Nom du contrôleur
var controllerName = RouteData.Values["controller"].ToString() ;
// Nom de l'action
var actionName = RouteData.Values["action"].ToString() ;
// Chaîne de requête Paramètres
var qsParameters = HttpUtility.ParseQueryString(Request.UrlReferrer.Query) ;
// var dictionary = qsParameters.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value) ;
return RedirectToAction(actionName, controllerName, new { qsParameters }) ;
Bien sûr, cela ne fonctionnera pas non plus, car le compilateur MVC crée une nouvelle "collection JSON" avec le nom de la variable (dans le cas présent "qsParameters") comme clé/nom et toutes les "choses paramétrées à l'intérieur" comme variable à la clé de votre variable "représentative" (dans notre cas concret - qsParameters).
Dans le cas présent, le problème est que la liste renvoyée par la méthode ParseQueryString semble se comporter différemment et qu'il est impossible de créer un dictionnaire à partir de cette liste
Il y a aussi la "mauvaise alternative" comme celle-ci : return RedirectToAction("ViewTopicDetails", controller + Request.UrlReferrer.Query) ;
Et si vous l'essayez par exemple dans la fenêtre immédiate, vous obtiendrez EXACTEMENT la demande que vous avez formulée, mais MVC a manifestement été créé pour ne pas fonctionner de cette manière.
Quelqu'un peut confirmer si c'est réellement possible ce que le demandeur (et maintenant moi aussi) demande.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.