在ASP.NET Core MVC 3.1中,Anchor标签助手默认情况下不会生成带有区域名称的正确路由。要解决这个问题,您可以使用以下方法之一:
Link Text
Link Text
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Microsoft.AspNetCore.Mvc.Routing;
namespace YourNamespace
{
[HtmlTargetElement("a", Attributes = "asp-area")]
public class CustomAnchorTagHelper : AnchorTagHelper
{
public CustomAnchorTagHelper(IHtmlGenerator generator) : base(generator)
{
}
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var area = output.Attributes["asp-area"].Value.ToString();
RouteValues["area"] = area;
base.Process(context, output);
}
}
}
然后,在_ViewImports.cshtml文件中添加以下代码,以引用自定义标签助手:
@using YourNamespace
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, YourAssemblyName
现在,您可以在视图中使用自定义Anchor标签助手,并它会自动生成带有区域名称的正确路由:
Link Text
这些方法中的任何一个都可以帮助您在ASP.NET Core MVC 3.1中生成带有区域名称的正确路由。