ビューから渡された値に応じて入力コントロールを無効/有効にする 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>
このタグヘルパーが無効な属性をチェックボックスに追加しない理由を誰か知っていますか?