2011-05-18 1 views
6

Comment configurer le routage ASP.NET MVC 3 afin qu'il ne montre pas le contrôleur dans l'URL?MVC Routage sans contrôleur dans l'URL

Voici mes itinéraires

routes.MapRoute(
      "Default", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      "HomeActions", 
      "{action}", 
      new { action= "AboutUs" } 
     ); 

J'ai besoin url:

mysite.com/AboutUs 

Mais je

mysite.com/Home/AboutUs 

Répondre

6

Vous devez ajouter une route sans la partie {controller}, et spécifier le contrôleur nom dans le paramètre defaults.

+0

Pas une mauvaise réponse, mais pourrait être plus spécifique. Masquer le nom du contrôleur peut avoir des conséquences. – NerdFury

+0

Merci pour votre réponse, mais cela ne fonctionne pas. J'essaie: routes.MapRoute ( \t "HomeActions", "{action}", nouveau {controller = "Home"}); – Victoria

+0

@Victoria: Vous devez mettre cela avant l'autre route, ou elle ne sera jamais atteinte (puisque l'autre route correspond d'abord aux URL) – SLaks

18

Je serais très précis à propos de l'URL que vous voulez router. Et placez-le au-dessus de la route par défaut. Etre moins spécifique à un itinéraire comme celui que vous avez suggéré pourrait avoir des conséquences indésirables. Surtout si indiqué ci-dessous la route par défaut.

routes.MapRoute(
    "HomeActions", 
    "{action}", 
    new { controller = "Home", action= "AboutUs" } 
); 

Par exemple, si l'itinéraire ci-dessus est ajoutée après la valeur par défaut l'URL http://www.example.com/AboutUs correspondrait probablement la route {controller = "Osec", action = "index", id = UrlParamter.Optional}. Si vous avez ajouté la route au-dessus de la route par défaut, puis recherchez l'URL http://www.example.com/Users que vous souhaitez utiliser comme action d'index sur le contrôleur Utilisateurs, recherchez désormais l'action Utilisateurs sur le contrôleur principal. Donc, je conseillerais d'être précis sur les itinéraires comme ça.

+0

Merci, vous avez raison! – Victoria

+0

A travaillé pour moi aussi. – Rolice