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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top