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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top