Dans mon contrôleur de page Web 1, je veux rediriger vers la page Web 2, en passant 2 variables.
J'ai essayé d'utiliser RedirectToRoute, mais je n'arrive pas à le faire fonctionner; une URL incorrecte s'affiche. Je suis ensuite passé à l'utilisation de RedirectToAction.
mon code:
Acheminement
routes.MapRoute(
"CreateAdditionalPreviousNames", // Route name
"Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults
);
RedirectToAction (qui fonctionne)
return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });
RedirectToRoute (ne fonctionne pas)
return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id });
Oh, et une autre chose, pouvez-vous rendre les paramètres obligatoires plutôt que facultatifs ... si oui, comment?
Oubliez les paramètres par défaut pour rendre les paramètres requis:
routes.MapRoute(
"CreateAdditionalPreviousNames", // Route name
"Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);
Pour la redirection d'itinéraire, essayez ceci:
return RedirectToRoute(new
{
controller = "UsersAdditionalPreviousNames",
action = "Index",
userId = user.Id,
applicantId = applicant.Id
});
Une autre habitude que j'ai prise de Steve Sanderson n'est pas de nommer vos itinéraires. Chaque route peut avoir un nom nul, ce qui vous fait spécifier tous les paramètres explicitement:
routes.MapRoute(
null, // Route name
"Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);