2016-02-19 65 views
0

我創建了一個管理子文件夾來包含所有與管理員相關的控制器。與此類似:Subfolder in Controllers ASP.NET MVCRouteConfig.cs無法按預期方式運行子文件夾

這裏是我的代碼在`RouteConfig.cs」

 routes.MapRoute(
      name: "Admin", 
      url: "admin/{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     ); 

我有一個ManageUserControllerAdmin文件夾,AdminControllers文件夾下

我有。一個PublicContollers直接根據Controllers

以下是我的問題:

  1. 我所有的Html.ActionLinkReturn View()和任何其他類似的redicrecting變得困惑。例如,Html.ActionLink("Public", "Index", "Public")會帶我到www.something.com/admin/public/index,而不是僅僅www.something.com/public/index

  2. 這真的似乎並不像admin關鍵字做路由任何用途。例如,www.something.com/admin/manageUser/indexwww.something.com/manageUser/index都會帶我到同一個地方。

預期輸出:

  1. 如果我有Html.ActionLink("Public", "Index", "Public"),就應該帶我去www.something.com/public/index,同樣,如果我有Html.ActionLink("Manage Users", "Index", "ManageUser"),應該帶我去www.something.com/admin/ManageUser/index

  2. 如果鍵入在www.something.com/ManageUser/Index,它應該把我的頁面找不到錯誤。

我錯過了什麼?

回答

0

子文件夾沒有得到官方的MVC支持。鏈接問題的答案顯示如何模擬一個子文件夾。如果你想創建嵌套的子文件夾,你需要一個新的路線,每個級別只能支持一個控制器。

如果你真的希望你的MVC應用程序具有子文件夾的行爲,我會建議使用MvcCodeRouting,它根據控制器所在的命名空間動態配置MVC路由(如果使用Visual Studio,它將與子文件夾),並且將支持每個文件夾中的多個控制器。

相關問題