Asp.net mvc 仅将控制器限制到特定区域
我有一个区域,在区域注册中我定义了该区域中所有控制器所属的命名空间Asp.net mvc 仅将控制器限制到特定区域,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-areas,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc Areas,我有一个区域,在区域注册中我定义了该区域中所有控制器所属的命名空间 context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { controller="Home", action = "Index", id = UrlParameter.Optional }, new[] {
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { controller="Home", action = "Index", id = UrlParameter.Optional },
new[] { "MySite.Admin.Controllers" } // Namespaces
);
如何防止该区域的控制器在不匹配路由的情况下被调用。
即/home/index(开头没有“admin”一词)
示例:
如果控制器“MySite.Admin.Controllers.HomeController”属于上面定义的区域根。我想禁止控制器工厂搜索该控制器(即抛出异常),如果它不匹配路径“Admin/{controller}/{action}/{id}”(“Admin”在末尾)。
所以,如果我键入“home/index”(开头没有“Admin”),网站将抛出一个找不到控制器的错误
希望我说得够清楚 添加约束以匹配区域 这是一本关于路线约束的好书 如果要编写自己的自定义管线约束,请阅读以下内容 编辑:
删除默认路由,并确保所有内容的作用域都是区域,然后home/index将抛出异常,因为它不适用于区域。很抱歉,无法理解您的问题,您能提供一个例子吗?这将使我能够检测到最佳匹配的路由,但不会禁止控制器工厂在特定区域下查找控制器我相信删除默认路由将解决问题,但只是想知道这是否是一个好的做法?这绝对不是一个坏的做法,因为您没有从中破解任何东西在框架中,您只是根据需要配置路由,仅此而已!:)谢谢,这正是我需要的。默认路由匹配并使用了区域内的控制器,因为控制器搜索逻辑。这不是框架中最干净的行为,而是合理的。