仅限控制器到特定区域

时间:2010-04-10 19:08:00

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-areas

我有一个区域,在AreaRegistration中我定义了区域中所有控制器所属的命名空间。

context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { controller="Home", action = "Index", id = UrlParameter.Optional },
                new[] { "MySite.Admin.Controllers" }             // Namespaces
            );

如果不匹配该路线,如何防止该区域内的控制器被调用。 I.E. / home / index(开头没有“admin”字样。)

示例:

如果有一个控制器“MySite.Admin.Controllers.HomeController”属于上面定义的区域根目录。我想禁止控制器工厂搜索该控制器(即抛出异常),如果它与路径“Admin / {controller} / {action} / {id}”(最后的“Admin”)不匹配。 因此,如果我键入“home / index”(开头没有“Admin”),网站将抛出一个无法找到控制器的错误。

希望我很清楚。

1 个答案:

答案 0 :(得分:2)

添加约束以匹配该区域!

Here是关于路线约束的很好的读物。

如果您想编写自己的自定义路径约束,请提供以下内容

http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/01/11/asp-net-mvc-route-constraints.aspx

修改

删除默认路由并确保所有内容都限定为区域,然后home / index将抛出异常,因为它没有作用于某个区域。