1

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

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

即使不匹配该路由,如何防止调用该区域中的控制器。IE /home/index(开头没有“admin”字样)。

例子:

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

希望我足够清楚。

4

1 回答 1

2

添加约束以匹配该区域!

是关于路线限制的好读物。

如果您想编写自己的自定义路由约束,请阅读以下内容

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

编辑:

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

于 2010-04-10T21:02:20.847 回答