Routen MVC Problem
-
13-09-2019 - |
Frage
lese ich eine Menge Post, und ich nicht mein mystake sehen.
Kann einige Körper mir bitte helfen.
Es ist mein 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);
}
Wenn ich
<%= Html.ActionLink("Edit Account", "EditProfile", "Account", new { username = Html.Encode(Page.User.Identity.Name) },null) %>
Ich habe diese url
http: // localhost: 8458 / Account / EditProfile username = cboivin
Wenn ich versuche, die URL direkt zu nennen wie http: // localhost: 8458 / Konto- / EditProfile / cboivin
nicht funktionieren ...
Es ist meine Methode in meiner Account
public ActionResult EditProfile(string username)
{
return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
}
Ich weiß nicht, wo mein Fehler ist. Kann mir jemand helfen ? Danke.
Lösung
Die Routen werden gelesen von oben nach unten, Ihre „alle fangen“ allgemeine Route braucht letzte sein.
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
);
Andere Tipps
Versuchen Sie entfernen:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Und denken Sie daran allgemeinere Routen an der Unterseite der Routing-Tabelle sein sollten, während spezifischere Routen oben kommen sollten.