Asp.Net основные пользовательские помощники тегов для элементов Select Lists-Asp выполняются дважды

Я создал простой помощник select tag для отключения поля при выполнении условия модели. Однако, когда он применяется к представлению Razor, кажется, что он выполняет встроенный помощник тега asp-items дважды (и добавляет тот же список дважды) при отображении представления. Любая помощь будет оценена.

Оскорбляющий помощник тега

[HtmlTargetElement("select", Attributes = "asp-disabled")]
public class DisabledSelectTagHelper : SelectTagHelper
{
    public DisabledSelectTagHelper(IHtmlGenerator generator) : base(generator) {}

    [HtmlAttributeName("asp-disabled")]
    public bool Disabled { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (Disabled)
            output.Attributes.Add("disabled", null);

        base.Process(context, output);
    }
}

Tag Helper in View

<div class="col-xs-4 padding-top-sm">
    <label asp-for="CreditCardVendor" class="inline"></label>
    <select asp-for="CreditCardVendor" asp-items="ViewBag.CreditCardVendors" class="form-control" asp-disabled="Model.UpdateCreditCardExpirationOnly"></select>   
</div>

_ViewImports.cshtml

@using UI
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, UI
@removeTagHelper Microsoft.AspNet.Mvc.TagHelpers.InputTagHelper, Microsoft.AspNet.Mvc.TagHelpers
@removeTagHelper Microsoft.AspNet.Mvc.TagHelpers.SelectTagHelper, Microsoft.AspNet.Mvc.TagHelpers

1 ответ

  1. Решение здесь состояло в том, чтобы не вызывать базу.Метод Process (). Проверка параметра TagHelperOutput во время отладки показала, что результат asp-items уже был выполнен, и явное вызов метода вызвало повторное выполнение asp-items.