我可能遇到过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?
如果我错了,请指出一些关于这个主题的文献(如果你知道的话)......这对我来说真的是个错误。
提前致谢!
答案 0 :(得分:2)
这与ASP.NET的工作方式有关,而不是ASP.NET MVC。当您的根目录中有Chat
文件夹且您请求/Chat
时,Web服务器始终更喜欢在路由引擎之前提供物理文件夹。因此,它在Default.aspx
文件夹中查找了一个名为/Chat
的文件(或您设置的任何默认文档),它找不到一个文件,并且它自带404。
在ASP.NET 4.0中,您可以relax it: - )
<httpRuntime relaxedUrlToFileSystemMapping="true" />