ASP.Net MVC: Passage d'un paramètre de chaîne à une action à l'aide de RedirectToAction ()
Je voudrais savoir comment passer un paramètre de chaîne à l'aide de RedirectToAction().
Disons que j'ai cet itinéraire:
routes.MapRoute(
"MyRoute",
"SomeController/SomeAction/{id}/{MyString}",
new { controller = "SomeController", action = "SomeAction", id = 0, MyString = UrlParameter.Optional }
);
Et dans SomeController, j'ai une action à faire une redirection comme suit:
return RedirectToAction( "SomeAction", new { id = 23, MyString = someString } );
J'ai essayé cette redirection avec someString = "!@#$%?&* 1" et il échoue toujours, peu importe si je encoder la chaîne. J'ai essayé d'encoder avec HttpUtility.UrlEncode(someString), HttpUtility.UrlPathEncode(someString), et avec l'Uri.EscapeUriString(someString) en vain.
Donc j'ai eu recours à nous TempData passer someString, mais tout de même, je serais curieux de savoir comment rendre le code du travail ci-dessus, juste pour satisfaire ma curiosité.
source d'informationauteur Jean-François Beauchamp
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème pourrait être dans votre parcours de commande, ou dans votre contrôleur. Voici un code que j'ai eu à travailler.
Les Définitions De Route
Contrôleur De Méthodes D'Action
Quand je navigue à
/Home/MoreTesting
- je obtenir le résultat désiré de "23Hello" de sortie dans mon navigateur. Vous pouvez poster votre parcours et de votre Contrôleur de code?OK, je sais que cette question est âgé de quelques jours, mais je n'étais pas sûr si vous avez ce problème triés ou non, donc j'ai eu un coup d'oeil. J'ai joué un peu avec ce pour un certain temps maintenant, et c'est ce qui est le problème et comment vous pouvez résoudre.
Le problème que vous rencontrez est que les caractères spéciaux à l'origine de problèmes sont l'un des nombreux (je pense que 20) les caractères spéciaux, tels que la % et ".
Dans votre exemple, le problème est le caractère%.
Comme l'a souligné
Priyank
ici:La chaîne de l'Url (pas de paramètre de chaîne de requête) ne peut pas gérer %(%25), "(%22) et ainsi de suite.
De plus, comme l'a souligné
Lee Gunn
dans le même post:http://localhost:1423/Home/Testing/23/!%40%23%24%25%3f%26*%201 (blow up)
L'une des façons de résoudre ce problème est de supprimer
{MyString}
de la route de la cartographie. Pour faire de votre mappage de racine ressembler à ceci:Ce sera la cause de la poste pour générer ce:
http://localhost:1423/Home/Testing/23?MyString=!%2540%2523%2524%2525%2B1
Maintenant, lorsque vous définissez
MyString
il sera transformé en un paramètre de chaîne de requête qui fonctionne parfaitement bien.J'ai essayé et cela a fonctionné.
Priyank
également mentionné dans le post, j'ai lié ci-dessus peut-être que vous pourriez résoudre ce avec une coutumeValueProvider
mais vous aurez à le suivre dans son article lié leur pour vérifier si c'est quelque chose qui pourrait s'appliquer à vous.