2010-11-03 25 views
6

Posso impostare un percorso che verrà mappato da un URL di livello root come questo?Routing ASP.NET MVC - Route "vuoto"

http://localhost:49658/

sto usando il VS2010 built-in server web.

tentando di stabilire un percorso con un vuoto o una stringa URL singola barra non funziona:

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

Esso genera l'errore "L'URL percorso non può iniziare con un '/' o ' ~ 'carattere e non può contenere un'? ' carattere.". Grazie in anticipo! Tutta la mia definizione della rotta è qui:

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

ci Mostra le tue altre vie, ho avuto un problema simile al precedente (e le note sulla risposta di XSaint32), il mio percorso predefinito è stato traduce in un 404 a meno che non ho specificato un controller/azione ed è stato a causa di un cattivo percorso di nome eslewhere nei miei percorsi – Jimmy

risposta

8

Cosa stai cercando di ottenere qui ... un URL che assomiglia a questo? http://www.acme.com/? Perché se lo sei, il percorso predefinito lo raggiungerà quando non viene specificato nessuno dei parametri.

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

Hai ragione, quell'URL è ciò che sto cercando di ottenere. Ho già un percorso esattamente come quello specificato. . . ma ottengo un errore HTTP 404 ("la risorsa non può essere trovata") quando F5 il mio progetto e colpisce l'URL di default, quindi sembrava che dovessi in qualche modo gestire il caso "URL vuoto" in modo specifico. – blaster

+0

@blaster - Fai un tentativo. Guarda se va bene per te. – dotariel

+0

Puoi incollare quel percorso qui? – dotariel

4

Utilizzando ASPNET MVC5: RouteConfig.cs di file:

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 } 
    ); 
} 

Inoltre:
Se si desidera reindirizzare la tua home page ad un altro percorso automaticamente, come "http://www.yoursite.com/" a " http://www.yoursite.com/bar ", utilizzare il metodo RedirectToRoute():

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