2015-09-23 91 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) –