在MVC4 ASP.NET中的路由

时间:2014-12-18 20:47:12

标签: asp.net-mvc-4

我在MVC4中与Routes挣扎

我有Home作为控制器,我有一个索引。我相信一个非常典型的设置!当我从Visual Studio加载网站时,它运行正常。

现在,我想了解这些路线。为此,我试图改变唯一的路线

routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = "Home", action = "Index" }
        ); 

我不明白为什么这条路线不起作用。我只有1个控制器,它是Home,所以通过设置Home/{action}/匹配模式(虽然它显然没有')

routes.MapRoute(
        name: "Home",
        url: "Home/{action}/",
        defaults: new { controller = "Home", action = "Index" }
        );

而不是获取网页我得到以下

  

HTTP错误403.14 - 禁止
  Web服务器配置为不列出此目录的内容   未为请求的URL配置默认文档,并且未在服务器上启用目录浏览。

1 个答案:

答案 0 :(得分:2)

您正在删除默认路由,因此不再有任何路由来处理“/”路由。

如果您输入yoursite / Home或/ Home / Index,它将起作用。但由于不再有任何处理默认情况的路由,因此您会遇到此问题。

你想要的是在你想要的默认路线之前添加一条额外的路线。但是,在这种情况下,当您明确输入/ Home url时,它将不会执行与默认路由不同的任何操作。另外,删除网址上的尾随'/',因为我不确定这是否会导致问题。即:

routes.MapRoute(
    name: "Home",
    url: "Home/{action}",
    defaults: new { controller = "Home", action = "Index" }
    );
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
    );