Routes MVC Problème
-
13-09-2019 - |
Question
Je lis beaucoup de courrier, et je ne vois pas mon mystake.
un corps peut me aider s'il vous plaît.
Il est mon global.asax
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute("UserName", "Account/{action}/{username}",
new { action = "EditProfile", controller = "Account" });
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
Quand j'utilise
<%= Html.ActionLink("Edit Account", "EditProfile", "Account", new { username = Html.Encode(Page.User.Identity.Name) },null) %>
Je suis cette url
http: // localhost: 8458 / compte / EditProfile nom d'utilisateur = cboivin
si je tente d'appeler directement l'URL comme http: // localhost: 8458 / compte / EditProfile / cboivin
ne pas travailler ...
Il est ma méthode dans mon AccountController
public ActionResult EditProfile(string username)
{
return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
}
Je ne sais pas où est mon erreur. Quelqu'un peut me aider le corps? Merci.
La solution
Les itinéraires sont lus haut vers le bas, votre « fourre-tout » voie générale doit être le dernier.
routes.MapRoute("UserName", "Account/{action}/{username}",
new { action = "EditProfile", controller = "Account" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Autres conseils
Essayez de supprimer:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Et rappelez-vous devrait être au bas de votre table de routage des itinéraires plus générales, alors que les routes plus spécifiques devraient venir sur le dessus.