2011-01-11 114 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() { .. }