ASP.NET MVC是否在根路径中搜索与Controller名称相同的文件夹?

时间:2011-01-21 22:40:33

标签: asp.net-mvc-2

我可能遇到过ASP.NET MVC中的一个错误,但我不确定(在搜索解释之后)我是否就在这里。

ASP.NET MVC在“Convention over Configuration”上非常重要,如果他们坚持下去,那就太好了。

我创建了一个名为“ChatController”的控制器,我在项目的Root路径中创建了一个名为“Chat”的文件夹,以保持与聊天相关的ViewModel。

然后我在“Views”文件夹中创建了一个名为“Chat”的文件夹,因为众所周知,ASP.NET MVC会查看“Views / [ControllerName]” - 文件夹和“Views / [Shared]”用于匹配视图的文件夹。

但每当我试图点击我的视图时,我都会得到“404”。我估计。天啊,也许我搞砸了一些简单的东西。所以我从有效的东西中复制,然后重命名。不......仍然是404。

然后我想..但是..它不可能...... NOOO,它可能不是我在根目录中的文件夹被调用与我的Views /文件夹中相同?可以吗?

我重命名了...而宾果游戏......我的视图被击中,一切正常。

当我说这违反了ASP.NET MVC应该如何工作时,我错了。是不是应该只在Views / [ControllerName]和Views / Shared中查看合适的View?

如果我错了,请指出一些关于这个主题的文献(如果你知道的话)......这对我来说真的是个错误。

提前致谢!

1 个答案:

答案 0 :(得分:2)

这与ASP.NET的工作方式有关,而不是ASP.NET MVC。当您的根目录中有Chat文件夹且您请求/Chat时,Web服务器始终更喜欢在路由引擎之前提供物理文件夹。因此,它在Default.aspx文件夹中查找了一个名为/Chat的文件(或您设置的任何默认文档),它找不到一个文件,并且它自带404。

在ASP.NET 4.0中,您可以relax it: - )

<httpRuntime relaxedUrlToFileSystemMapping="true" />