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
。
- 寻找/Areas/IT/ITAreasRegistration.cs
- 在其
public override void RegisterArea(AreaRegistrationContext context)
方法中添加路由映射,最好在最顶部或至少在该区域的默认路由之前。
类似于:
context.MapRoute(
"default_IT",
"IT",
new { action = "Index", controller = "ITHome" },
new[] { "YourAppNamespaceHere.Areas.IT.Controllers" }
);
- 至于 link... 我只是将其手动编码为
<a href="/IT">IT Home</a>
并完成它,除非您将其托管为来自 wwwroot 的子应用程序,否则您应该很好。
通过这种方式,您可以将区域路线与正常路线分开。
我有一个 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
。
- 寻找/Areas/IT/ITAreasRegistration.cs
- 在其
public override void RegisterArea(AreaRegistrationContext context)
方法中添加路由映射,最好在最顶部或至少在该区域的默认路由之前。
类似于:
context.MapRoute(
"default_IT",
"IT",
new { action = "Index", controller = "ITHome" },
new[] { "YourAppNamespaceHere.Areas.IT.Controllers" }
);
- 至于 link... 我只是将其手动编码为
<a href="/IT">IT Home</a>
并完成它,除非您将其托管为来自 wwwroot 的子应用程序,否则您应该很好。
通过这种方式,您可以将区域路线与正常路线分开。