我正在使用以下代码生成链接
@Html.ActionLink("Search", "Index", "Properties")
在客户端呈现
<a href="/Properties">Search</a>
看看上面的链接,我希望能够
controller: Properties
action: Index
当我点击链接时,我导航到http://localhost:49878/Properties/
并收到错误
HTTP错误403.14 - 禁止访问 Web服务器配置为不列出此目录的内容。
如果我导航到http://localhost:49878/Properties/Index
,我会收到预期的页面。
为什么?
我看过RouteConfig
试图理解这一点并查看默认路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我认为下面会解决这个问题,但事实并非如此,为什么?
routes.MapRoute(
name: "Search",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Properties", action = "Index", id = UrlParameter.Optional }
);
答案 0 :(得分:1)
您不能使用属性,因为它是具有AssemblyInfo.cs的文件夹的名称。所以有限制的名字。
将此添加到
routes.RouteExistingFiles = true;
RegisterConfig中的RegisterRoutes忽略物理路径(虽然这会对静态文件产生一些复杂性,但要对其进行彻底测试)。
更好的方法是重命名控制器并使用它,不确定是否还有其他事情可以完成。
答案 1 :(得分:1)