2012-03-08 4 views
0

J'ai un chemin psychique: Home/signUp.aspxambiguïté de routage MVC

et Controller/HomeController.cs (related to Views/home/index.aspx)

Mon routage est configuré dans le global.asax:

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
      routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
      routes.IgnoreRoute("{resource}.ashx/{*pathInfo}"); 

    //settings - manage toolbars 
     routes.MapRoute("SettingsManageToolbars", "home/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

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

Quand je surfe à home\signup.aspx je reçois un texte page avec "contenu du répertoire"

Comment réparer ce routage?

+1

Dans MVC vous généralement pas utiliser plus « .aspx » dans vos chemins - le routage est là pour transformer une URL en un appel à un contrôleur et d'action; qui appellera alors une vue - qui est le .aspx ou .ascx ou quoi que ce soit. Je ne suis pas sûr que vous compreniez parfaitement le but de MVC. Je ne suis pas sûr de comprendre vraiment votre question. –

+0

Supprimer routes.IgnoreRoute ("{ressource} .aspx/{* pathInfo}"); – Lloyd

+0

@Lloyd Pourquoi cela aiderait-il? –

Répondre

0

Par défaut, le routage ne gère pas les demandes qui correspondent à un fichier physique existant sur le serveur Web. Le routage ne gère pas la requête même si elle correspond à un modèle défini, tel que {controller}/{action}/{id}.

Si vous voulez routage pour gérer toutes les demandes, même les demandes qui pointent vers des fichiers, vous pouvez remplacer le comportement par défaut en définissant les RouteExistingFiles propriété du RouteCollection objet true. Lorsque vous définissez cette valeur sur true, toutes les demandes correspondant à un modèle défini sont gérées par routage.

http://msdn.microsoft.com/en-us/library/cc668201.aspx#scenarios_when_routing_is_not_applied

+0

Alors pourquoi ai-je accès à la page 'directory content'? –

0

Pourquoi votre contrôleur domestique est-il un fichier aspx? Essayez de faire un HomeController.cs!

Je vous suggère de supprimer votre contrôleur en cours et en ajoutant un autre via le menu contextuel (clic droit, Ajouter)

+0

il fichier cs. Ma faute. –