2011-06-24 38 views
3

我已經創建了一個新的帶有區域的ASP.NET MVC項目,並且我試圖將控制器操作設置爲默認控制器操作(如果用戶訪問該區域)。如何獲得ASP.NET MVC爲區域設置默認控制器和操作?

我添加了一個名爲'登錄'的區域,現在我有Areas/Login/,我添加了LoginController

我想設置這個控制器,當用戶導航到網站時被調用。 我可以訪問它,如果我輸入瀏覽器www.test.com/Login/Login但我不知道如何在global.asax設置路由指向該控制器作爲默認值。

如何在ASP.NET MVC中做到這一點?

+0

點擊這裏:http://stackoverflow.com/questions/2140208/how-to-set-a -default-route-to-an-area-in-mvc –

回答

5

當你創建你的區域時,MVC沒有創建Area/[AreaName]文件夾下的[AreaName]AreaRegistration類嗎?在那裏您會發現與此類似的區域註冊。修改默認參數控制器名(登錄)的controller =部分要通過默認使用:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Login_default", 
      "Login/{controller}/{action}/{id}", 
      new { controller = "Login", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
+0

該控制器是問題,謝謝。 – 1110

2

如果您使用[Authorize]屬性修飾您的HomeController(或確實是需要某人登錄的所有控制器),ASP.NET MVC將自動將用戶重定向到登錄屏幕(如果他們未登錄)。

用法示例:

[Authorize] 
public ActionResult Home() 
{ 
} 

此外,您可能想在Open Redirect attack vulnerability (and fix)讀了。

+0

我把這裏的登錄作爲例子。我的主要問題是如何設置路由以啓動某個控制器作爲默認值,如果該控制器在區域內。 – 1110

相關問題