MVC 4.0路由“区域”前缀

时间:2015-09-23 20:15:09

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我猜我的问题非常严重,但我找不到任何工作正常的awenser或链接。所以。

关键是,我希望我的网址反映我的文件夹结构。女巫是:

~/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

两者都有效!我认为路由会检查您是否通过了有效的“控制器”和“操作”并选择了第一个符合条件的路径。

如果相应的前缀不匹配,如何创建无效的路由配置?

1 个答案:

答案 0 :(得分: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是唯一的