2010-11-03 24 views
6

¿Puedo configurar una ruta que se asignará desde una URL de nivel raíz como esta?Enrutamiento ASP.NET MVC: ruta "en blanco"

http://localhost:49658/

estoy usando el VS2010 incorporada en el servidor web.

El intento de establecer una ruta con un blanco o una cadena URL de una sola barra no funciona:

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

Se produce el error "La URL ruta no puede comenzar con un '/' o ' ~ 'personaje y no puede contener un'? ' personaje.". ¡Gracias por adelantado! Toda mi definición de la ruta está aquí:

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

     routes.MapRoute(
      "EditingTitles", // Route name 
      "{controller}/{action}/{startingLetter}", // URL with parameters 
      new { controller = "Admin", action = "Index", startingLetter = UrlParameter.Optional } // Parameter defaults 
     ); 

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

Muéstranos tus otras rutas, que tenía un problema similar al anterior (y sus notas sobre la respuesta de XSaint32), mi ruta por defecto se traduce en un 404 a menos que se especifica un controlador/acción y que era debido a una mala ruta denominada eslewhere en mis rutas – Jimmy

Respuesta

8

¿Qué está tratando de lograr aquí ... una dirección URL que se ve así? http://www.acme.com/? Porque si lo es, la ruta predeterminada lo logrará cuando no se especifique ninguno de los parámetros.

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

Tienes razón, esa URL es lo que estoy tratando de lograr. Ya tengo una ruta exactamente igual a la que especifiques. . . pero recibo un error HTTP 404 ("el recurso no se pudo encontrar") cuando llegué a mi proyecto F5 y toca la URL predeterminada, por lo que parecía que de alguna manera tenía que manejar el caso de "URL vacía" específicamente. – blaster

+0

@blaster - Pruébalo. Mira si te funciona. – dotariel

+0

¿Puedes pegar esa ruta aquí? – dotariel

4

El uso de ASPNET MVC5: RouteConfig.cs archivo:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     name: "Homepage", 
     url: "", 
     defaults: new { controller = "Content", action = "Index" } 
    ); 
    routes.MapRoute(
     name: "foo", 
     url: "bar", 
     defaults: new { controller = "Content", action = "Index" } 
    ); 
    routes.MapMvcAttributeRoutes(); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{title}", 
     defaults: new { controller = "Content", action = "Details", title = UrlParameter.Optional } 
    ); 
} 

Plus:
Si deseos para redirigir su página de inicio a otra ruta de forma automática, como "http://www.yoursite.com/" a " http://www.yoursite.com/bar ", solo use el método RedirectToRoute():

public class ContentController : Controller 
    { 
     public ActionResult Index() 
     { 
      return RedirectToRoute("foo"); 
     } 
    } 
Cuestiones relacionadas