Я пытаюсь расширить встроенный объект 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";
}
}
}
Проблема заключается в том, что при использовании значения по умолчаниюИмя тега 'a' в атрибуте [HtmlTargetElement ("a")], которое выдает это исключение:
System.InvalidOperationException: 'Невозможно переопределить атрибут' href 'для.Объект с указанным значением 'href' не должен иметь атрибутов, начинающихся с 'asp-route-' или 'asp-action', 'asp-controller', 'asp-area', 'asp-route', 'asp-protocol', 'asp-host', 'asp-фрагмент', 'asp-page' или 'asp-page-handler' атрибут. '
Если я использую другое имя тега вместо' a '(например, «aa») работает, но я хотел бы использовать тег «a» в своих представлениях.
Пожалуйста, помогите мне решить эту проблему!Спасибо!