我在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配置默认文档,并且未在服务器上启用目录浏览。
答案 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" }
);