2010-11-03 145 views
6

我可以设置一个路由,从这样的根级URL映射吗?ASP.NET MVC路由 - “空白”路由

http://localhost:49658/

我使用的是内置的Web服务器的VS2010。

试图建立一个路由一个空白或单斜杠URL字符串不起作用:

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

这导致错误“路径URL不能以‘/’或' 〜'字符,它不能包含'?'字符。”。提前致谢!我的整个路由定义在这里:

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

向我们展示您的其他路线,我有一个类似于上面的问题(以及您在XSaint32的答案中的注释),我的默认路由导致了一个404,除非我指定了控制器/操作,并且这是由于命名路由不正确eslewhere在我的路线 – Jimmy 2010-11-03 14:42:47

回答

8

你想在这里实现什么......一个像这样的URL? http://www.acme.com/?因为如果你是这样,当没有指定任何参数时,默认路由就会实现。

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

你说得对,那个URL就是我想要达到的。我已经有一个完全像你指定的路线。 。 。但是当我F5我的项目并且它遇到默认URL时,我得到了一个HTTP 404(“找不到资源”)错误,所以看起来好像我不得不以某种方式专门处理“空URL”的情况。 – blaster 2010-11-03 14:18:44

+0

@blaster - 给它一个镜头。看看它是否适合你。 – dotariel 2010-11-03 14:19:12

+0

你可以在这里粘贴路线吗? – dotariel 2010-11-03 14:22:04

4

使用ASPNET MVC5: RouteConfig.cs文件:

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

加:
如果您希望您的主页自动重定向到其他航线,如 “http://www.yoursite.com/” 到“ http://www.yoursite.com/bar“,只是使用方法RedirectToRoute()

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