Percorsi MVC Problema
-
13-09-2019 - |
Domanda
Ho letto un sacco di posta, e io non vedere il mio mystake.
Può un certo corpo aiutarmi per favore.
Non è il mio 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);
}
Quando uso
<%= Html.ActionLink("Edit Account", "EditProfile", "Account", new { username = Html.Encode(Page.User.Identity.Name) },null) %>
Ho ottenuto questo url
http: // localhost: 8458 / account / EditProfile username = cboivin
se provo a chiamare l'url direttamente come http: // localhost: 8458 / account / EditProfile / cboivin
non lavorare per ...
Non è il mio metodo nel mio AccountController
public ActionResult EditProfile(string username)
{
return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
}
Non so dove è il mio errore. Può qualche corpo aiutarmi? Grazie.
Soluzione
Percorsi vengono lette dall'alto verso il basso, il vostro "catch all" itinerario generale deve essere l'ultimo.
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
);
Altri suggerimenti
Prova a rimuovere:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
E ricordate percorsi più generali dovrebbero essere in fondo alla vostra tabella di routing, mentre percorsi più specifici dovrebbero venire in cima.