2015-09-23 88 views
0

我猜我的問題是非常stuppied,但我找不到任何awenser或鏈接工作正常,所以。MVC 4.0路由「區域」前綴

重點是,我想我的網址反映我的文件夾strcuture。女巫:

~/Controllers/Admin/ 
~/Controllers/Supply/ 

我routeconfig這個樣子的:

routes.MapRoute(
       name: "Admin", 
       url: "Admin/{controller}/{action}", 
       namespaces: new [] {"Web_Intranet.Controllers.Admin"} 
      ); 

routes.MapRoute(
       name: "Supply", 
       url: "Supply/{controller}/{action}", 
       namespaces: new [] {"Web_Intranet.Controllers.Supply"} 
      ); 

的問題是,如果你在布勞爾網址鍵入以下內容:

localhost:4342/admin/users/showall 
OR 
localhost:4342/supply/users/showall 

雙方將努力!我假定路由檢查是否通過了一個有效的「控制器」和「動作」並選擇了與條件匹配的第一個。

如何創建一個有效的路由配置,如果相應的前綴不匹配,將無法工作?

回答

0

下面是你應該爲每個區域添加的配置;

~/Areas/Admin/AdminAreaRegistration.cs

using System.Web.Mvc; 

namespace MyApp.Areas.Admin 
{ 
    public class AdminAreaRegistration : AreaRegistration 
    { 
    public override string AreaName 
    { 
     get 
     { 
     return "Admin"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
    } 
    } 
} 

確保ROUTE_NAME是唯一

+0

我知道我所提及般的術語「區」,但我不使用對謨地區。這會繼續嗎? –

+0

可能會幫助你 - [ASP.NET MVC 4路由 - 控制器/ ID與控制器/動作/ ID](http://stackoverflow.com/questions/18038284/asp-net-mvc-4-routes-controller -id-VS-控制器動作id) –