我怎么知道路由的一部分是控制器和什么只是一个子文件夹?

时间:2011-11-05 08:20:28

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

在查看MVC页面并查看表单操作时,我可以看到它设置为:

  

/管理/ WikiAdmin /编辑/

所以我花了一些时间寻找一个名为 admin 的控制器。我查看了全球的路线,没有任何东西存在。

最终我发现这个网址实际上映射到了 WikiAdmin 控制器,令人困惑。这是否意味着您可以在子文件夹中拥有控制器?应用程序如何知道将请求转发给管理员控制器并实际将其发送到 WikiAdmin 控制器?

2 个答案:

答案 0 :(得分:1)

网址的admin部分称为area。您可以在this article中阅读有关区域的更多信息。还有一个video here。基本上,区域允许您将多个控制器分组,共享站点上的一些常用功能。

答案 1 :(得分:1)

是的,您可以在子文件夹中安装控制器。使用路由可能会有很多可能的URL。 例如,如果您的路线注册如下:

routes.MapRoute(
    "admin1",
    "admin/{controller}/{action}/",
    new { controller = "WikiAdmin", action = "Index"}
);

网址可以是 / admin / WikiAdmin / Index / / admin / WikiAdmin / Edit / 或与路线匹配的其他内容。 (假设在WikiAdmin控制器中有一个Edit动作)

更多示例,如果您的路线注册如下:

routes.MapRoute(
    "admin2",
    "account/{action}/", //no controller specified in url
    new { controller = "WikiAdmin", action = "Index"}
);

然后网址可以是 / account / Index / / account / Edit / ,甚至是 / account / 。 (因为默认控制器是WikiAdmin,默认操作是索引)