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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top