2

我编写了一个名为 CanEditTagHelper 的 TagHelper,它根据从视图传入的值禁用/启用输入控件。

TagHelper 看起来像这样:

[HtmlTargetElement("input", Attributes = CanEditAttribute)]
public class CanEditTagHelper : TagHelper
{
    private const string CanEditAttribute = "asp-can-edit";

    [HtmlAttributeName(CanEditAttribute)]
    public bool CanEdit { set; get; }

    public CanEditTagHelper(IHtmlGenerator generator)
    {
    }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (!CanEdit)
        {
            output.Attributes["disabled"] = "disabled";
        }
        base.Process(context, output);
    }
}

它像这样在视图中使用......

<input asp-for="UserName" asp-can-edit='Model.CanEditMember("UserName")' />

这适用于常规输入,但似乎不适用于 CheckBox。disabled 属性永远不会添加到复选框输入中。

<div class="checkbox">
    <label asp-for="Active" asp-context="label">
        <input asp-for="Active" 
               asp-can-edit='Model.CanEditMember("Active")'
               type="checkbox" />
            Active
    </label>
</div>

有谁知道为什么这个标签助手不向复选框添加禁用属性?

4

0 回答 0