小编SZL*_*SZL的帖子

在 ASP Net.Core 2.2 中使用自动属性扩展 AnchorTagHelper

我尝试扩展内置的 AnchorTagHelper 对象以自动向生成的 url 添加文化相关设置。

我的代码:

namespace MyCoreSite.Mvc.TagHelpers
{
    [HtmlTargetElement("a")]
    public class MyAnchorTagHelper : AnchorTagHelper
    {
        public MyAnchorTagHelper(IHtmlGenerator generator) : base(generator)
        {
        }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            var requestCulture = this.ViewContext.HttpContext.Features.Get<IRequestCultureFeature>();

            if (context.AllAttributes["asp-route-culture"] == null)
            {
                this.RouteValues.Add("culture", requestCulture.RequestCulture.UICulture.Name);
            }

            base.Process(context, output);
            output.TagName = "a";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我在 [HtmlTargetElement("a")] 属性中使用默认的 'a' 标记名称时,它会引发此异常:

System.InvalidOperationException: '无法覆盖 'href' 属性。具有指定“href”的属性不得以“asp-route-”或“asp-action”、“asp-controller”、“asp-area”、“asp-route”、“asp-protocol”开头、“asp-host”、“asp-fragment”、“asp-page”或“asp-page-handler”属性。

如果我使用另一个标签名称而不是 'a'(例如 'aa')它的工作,但我想在我的视图中使用 'a' 标签。

请帮我解决这个问题!谢谢!

c# asp.net asp.net-core-tag-helpers asp.net-core-2.2

3
推荐指数
1
解决办法
1225
查看次数