2010-08-01 4 views
1

J'ai deux itinéraires cartographiés dans mon application MVC:Comment contourner un conflit de mappage de routage ASP.Net MVC?

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Project", 
     "{controller}/{projectid}/{action}/{id}", 
     new { controller = "Project", action = "Index", id = "" }); 

    routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 

} 

Pour la plupart, ceux-ci ne posent aucun problème, mais je frappe du mal en essayant d'appeler le/compte/vue LogOn. Ma syntaxe ActionLink ressemble à ceci (je l'ai essayé quelques variations y compris les valeurs d'itinéraire nulles et autres):

<%= Html.ActionLink("Log On", "LogOn", "Account") %> 

navigation à ce point de vue soulève une erreur 404 (« La ressource est introuvable »). Idéalement, je voudrais éviter une énorme quantité de reprises, alors quelle serait la meilleure façon d'éviter ces conflits?

Répondre

1

Avez-vous essayé cette variante avec le littéral pour le contrôleur?

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Project", 
     "Project/{projectid}/{action}/{id}", 
     new { controller = "Project", action = "Index", id = "" }); 

    routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 
} 

Ce attraperions: http://localhost/Project/12 et http://localhost/Project/12/Edit et http://localhost/Project/2/View/2

Mais il passerait http://localhost/Account/LogOn à la deuxième rounte. Oui?

+0

Gaaa! C'est toujours la réponse la plus simple et la plus évidente. C'est fait. Merci. –