2011-05-18 29 views
6

¿Cómo configuro el enrutamiento ASP.NET MVC 3 para que no se muestre el controlador en la url?Enrutamiento MVC sin controlador en la url

Aquí están mis rutas

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

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

necesito url:

mysite.com/AboutUs 

Pero tengo

mysite.com/Home/AboutUs 

Respuesta

6

Es necesario añadir una ruta sin la parte {controller}, y especificar el controlador nombre en el parámetro por defecto.

+0

No es una respuesta incorrecta, pero podría ser más específica. Ocultar el nombre del controlador puede tener consecuencias. – NerdFury

+0

Gracias por su respuesta, pero no funciona. Intento: routes.MapRoute ( \t "HomeActions", "{action}", new {controller = "Home"}); – Victoria

+0

@Victoria: debe colocarlo antes de la otra ruta, o nunca se alcanzará (ya que la otra ruta coincide primero con las URL) – SLaks

18

Sería muy específico sobre la URL que desea enrutar. Y colóquelo sobre la ruta predeterminada.

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

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

Ser menos específico con una ruta como la que sugirió podría tener consecuencias no deseadas. Especialmente si se enumera debajo de la ruta predeterminada.

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

Por ejemplo, si se añade la ruta anterior después de que el valor predeterminado, entonces el URL http://www.example.com/AboutUs sería probable que coincida con la ruta {controller = "AboutUs", la acción = "índice", id = UrlParamter.Optional}. Si agregó la ruta por encima de la predeterminada, entonces, si busca la url http://www.example.com/Users que podría querer ser la acción Índice en el controlador de usuarios, ahora buscaría la acción de los usuarios en el controlador doméstico.

Así que aconsejaría ser específico sobre rutas como esa.

+0

¡Gracias, tienes razón! – Victoria

+0

funcionó para mí, también. – Rolice

Cuestiones relacionadas