MVC区域路由

时间:2015-04-09 14:12:29

标签: c# asp.net-mvc razor html-helper asp.net-mvc-areas

我有一个MVC应用程序如下:

Application
 Controllers
      HomeController
           ActionResult Index();
 Areas
      IT
           Controllers
                ITHomeController
                     ActionResult Index();

我已将链接设置为在主应用程序和IT区域之间正常工作。

在网址中,指向IT区域的链接显示为http://localhost/IT/ITHome。 链接的代码是:

@Html.ActionLink("IT Page","Index","ITHome", new { area = "IT" }, null)

我如何将网址简单地http://localhost/IT我确定这很简单。

谢谢!

2 个答案:

答案 0 :(得分:3)

  1. 寻找/Areas/IT/ITAreasRegistration.cs
  2. 在其public override void RegisterArea(AreaRegistrationContext context)方法中添加路线映射,最好是在该区域的默认路线的最顶部或至少之前。
  3. 类似的东西:

    context.MapRoute(
                    "default_IT",
                    "IT",
                    new { action = "Index", controller = "ITHome" },
                    new[] { "YourAppNamespaceHere.Areas.IT.Controllers" }
                );
    
    1. 关于链接...我只是将其编码到<a href="/IT">IT Home</a>并完成它,除非你将其作为wwwroot的子应用程序托管,你应该没事。
    2. 通过这种方式,您可以将您的区域路线与正常路线分开。

答案 1 :(得分:1)

ITHomeController重命名为HomeController可能会给您带来模糊匹配。

您可以更改已注册的路线映射,例如如果区域匹配ITHOME,则添加一个IT作为默认控制器的新路由。

routes.MapRoute(
       "ITHome",
       "IT/{controller}/{action}/{id}",
       new { area = "IT", controller = "ITHome", action = "Index", id = UrlParameter.Optional }
);

然后,仅针对IT区域,它将允许默认控制器为您的ITHomeController