MVC3 Controller文件夹不会出现在URL中

时间:2011-07-02 08:15:56

标签: asp.net asp.net-mvc asp.net-mvc-3 c#-4.0

这只是一个我无法弄清楚如何使其发挥作用的例子。

在我的MVC3 Controller文件夹中,如果我添加一个名为“Admin”的新文件夹并添加一个带有“Index”操作的控制器“News”,当您尝试打开该URL时会出现服务器错误(404):< / p>

http://url/Admin/News

即使您在其后面键入“/ Index”,它也无法正常工作。你怎么能形成一个层次结构,导致类似的URL?为了清楚起见,我想创建URL,如:

http://url/folder1/folder2/controller/action

由于

1 个答案:

答案 0 :(得分:16)

您似乎仍在思考“物理文件路径”的思维方式。 .NET MVC使用路由的概念,您可以在其中定义映射到控制器类和操作的路由。简单来说,您没有映射到文件,而是映射到类。

如果查看Web项目的global.asax文件,您将看到一个名为RegisterRoutes()的方法。此方法连接您站点的所有可用路由,用于查找要执行的正确控制器/操作/参数/模式。

现在,我建议解决你正在寻找的问题的方法是创建一个区域。听起来你想要在你的网站上有一个管理部分,所以我会做以下事情:

右键单击您的网站项目,选择“添加”,选择“区域”

enter image description here

为您的区域命名,在这种情况下,“管理员”会有意义

您的解决方案资源管理器现在将添加“区域”管理员。请注意它是如何模仿标准项目的结构和布局的,只能在它自己的文件夹中。

enter image description here

在新创建的管理区域中添加控制器并将其命名为“新闻” 添加您的操作

以下是测试结果网址:

enter image description here

这个解决方案是为了简单起见。如果你想进一步,你将不得不深入研究我在上面提到的RegisterRoutes()方法中创建自己的路由。路由是你应该掌握的,所以我建议这样做。