我有一个区域,在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”),网站将抛出一个无法找到控制器的错误。
希望我很清楚。
答案 0 :(得分:2)
添加约束以匹配该区域!
Here是关于路线约束的很好的读物。
如果您想编写自己的自定义路径约束,请提供以下内容
http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/01/11/asp-net-mvc-route-constraints.aspx
修改强>
删除默认路由并确保所有内容都限定为区域,然后home / index将抛出异常,因为它没有作用于某个区域。