2011-01-11 113 views

回答

0

最简单的方法可能是更新路由,以便控制器是硬编码和URL模板的一部分,而不是使用可以使用任何控制器的默认路由。

如果你想要一个自定义的错误页面而不是404,添加另一条匹配任何东西的路由,并且还有一个硬编码的控制器和动作。

您也可以通过Application_BeginRequest中的URL进行过滤,但这可能比路由所需的两行代码更有效。

0

区域只是组织代码并分离出属于该区域的路由的一种很好的方式。有了这个说法,你不一定要寻找一个特定的区域,但路线将匹配该地区的行动。所以,如果你有一个管理区,你可能有这样的路线:

context.MapRoute(
      "AdminRoute", 
      "Admin/{controller}/{action}", 
      new { controller = "Admin", action = "Index" }); 

你知道这是一个管理区的路线,因为你应该知道哪些路由将调用在管理区域控制器的操作。如果你想利用这条航线上面的例子,重定向到一个错误页面,你可以使用通配符路线:

context.MapRoute(
      "AdminErrorRoute", 
      "Admin/{*url}", 
      new { controller = "Error", action = "Error" }); 

这将需要与/管理员开头的路线,并将其重定向到一个错误页面。不知道为什么你想要将所有用户重定向到整个区域的错误页面。如果您只是希望用户按用户分类,则可以使用控制器操作上的属性过滤器来确定用户是否应该重定向到错误页面。类似这样的:

[IsUserAdmin()] 
public ActionResult Index() { .. }