我有一个没有区域的现有应用程序。但是,我添加了一个全新的部分,所以我创建了一个区域。所以我有一个区域和默认区域。
所以,例如:
默认路线= /发票/创建
区域路线= / TAE /港口/创建
这两个链接都有效。但是,当我导航到TAE区域部分时,所有链接都会更改为在该TAE区域内。例如/ TAE /发票/创建
我可以强制他们没有区域向操作链接添加新的{area =“”},但这涉及修改应用程序中的每个链接。
是否可以将没有指定区域的actionlink始终转到默认区域,无论当前页面位于哪个区域?
的global.asax.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { area="", controller = "Home", action = "Index", id = "" }, // Parameter defaults
new string[] { "BankingDB.Controllers" } //namespaces
);
}
TAEAreaRegistration.cs
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"TAE_default",
"TAE/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
链接到TAE区域:
<%= Html.ActionLink("Create", "Create", "Port" , new { area = "TAE"}, new {}) %>
正常区域链接:
<%= Html.ActionLink("Create", "Create", "Invoice") %>
答案 0 :(得分:0)
编辑: 我建议,如果你要在任何地方使用某个区域,你应该把它们全部放在区域内。
否则,你可以使用该签名覆盖扩展名并默认为area =“”然后你永远不需要写它:D This is a link to what you would want to overwrite ;D
额外编辑:只是为了确保你理解我给你的道路。您可以轻松地创建一个新的扩展名,该扩展名将填充参数区域为空白的函数。或者总是只是覆盖lol祝你好运