2014-09-24 73 views
3

到目前爲止,我無法完成此項工作,因此我需要一些幫助。我有一個基本的MVC 5網站,並且我添加了一個叫做Administration的區域。對於我的生活,我無法弄清楚如何正確設置一個區域的默認控制器/動作。MVC5自定義路徑以從區域刪除控制器名稱

在我的網站,我有一個名爲管理員的區域,一個名爲Admin(用指數法和視圖)控制器,這是該地區註冊:

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     name: "Admin_base", 
     url: "Admin", 
     defaults: new { area = "Admin", controller = "Admin", action = "Index", id = UrlParameter.Optional } 
    ); 

    context.MapRoute(
     "Admin_default", 
     "Admin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

第一圖路線可以讓我瀏覽到http://myapplication/Admin並顯示我設置的視圖(管理員/索引),並保持URL爲http://myapplication/Admin(這正是我想要的)。現在,通過添加它,它會打破任何進一步路由到控制器。所以當我嘗試導航到管理區域中的菜單控制器時,它失敗。

有沒有正確的方法來做到這一點?

即我需要http://myapplication/Admin/Menu/Create路線正確,也需要保留該區域的默認控制器/行動。

回答

4

你應該只能夠將它們組合成一個:

context.MapRoute(
    "Admin_default", 
    "Admin/{controller}/{action}/{id}", 
    defaults: new { area = "Admin", 
        controller = "Admin", 
        action = "Index", 
        id = UrlParameter.Optional } 
); 

通過指定默認值,你應該能夠調用/Admin/和參數的其餘部分設置爲默認值。

+0

非常感謝!我想我早些時候嘗試過這個,並且失敗了,因爲我在某處重用了一個類名,並認爲它不起作用。你的答案是完美的,並將它設置爲這樣。 – Keith 2014-09-24 16:45:22