Problema rutas MVC
-
13-09-2019 - |
Pregunta
He leído un montón de correos, y no veo mi mystake.
¿Puede algún cuerpo me ayude por favor.
No es mi 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);
}
Cuando uso
<%= Html.ActionLink("Edit Account", "EditProfile", "Account", new { username = Html.Encode(Page.User.Identity.Name) },null) %>
Tengo esta url
http: // localhost: 8458 / Cuenta / EditProfile nombre de usuario = cboivin
si trato de llamar a la URL directamente como http: // localhost: 8458 / Cuenta / EditProfile / cboivin
No trabajar a ...
No es mi método en mi AccountController
public ActionResult EditProfile(string username)
{
return View(ServiceFactory.UserAccount.GetUserByUserName(new GetUserByUserNameArgs(username)));
}
No sé dónde está mi error. Puede alguien ayudarme ? Gracias.
Solución
Las rutas se leen de arriba hacia abajo, su ruta general "todo" ni tiene que ser pasado.
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
);
Otros consejos
Prueba a eliminar:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
Y recuerda rutas más generales deben estar en la parte inferior de la tabla de enrutamiento, mientras que las rutas más específicas deben venir en la parte superior.