MVC 区域路由

MVC Areas Routing

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

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

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

在 URL 中 link 到 IT 区域显示为 http://localhost/IT/ITHome。 link 的代码是:

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

我如何让 url 简单地成为 http://localhost/IT 我相信这很简单。

谢谢!

ITHomeController 重命名为 HomeController 可能会给您带来不明确的匹配。

您可以更改已注册的路由映射,例如如果区域匹配 IT.

,则添加一条以 ITHOME 作为默认控制器的新路线
routes.MapRoute(
       "ITHome",
       "IT/{controller}/{action}/{id}",
       new { area = "IT", controller = "ITHome", action = "Index", id = UrlParameter.Optional }
);

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

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

类似于:

context.MapRoute(
                "default_IT",
                "IT",
                new { action = "Index", controller = "ITHome" },
                new[] { "YourAppNamespaceHere.Areas.IT.Controllers" }
            );
  1. 至于 link... 我只是将其手动编码为 <a href="/IT">IT Home</a> 并完成它,除非您将其托管为来自 wwwroot 的子应用程序,否则您应该很好。

通过这种方式,您可以将区域路线与正常路线分开。