在Core MVC中,有一个新的概念作为Tag助手。
我们以前可以创建自定义html助手,根据验证数据注释附加一些类,如[必需]。
由于TagHelpers是一个非常新的领域,我无法找到足够的资源来实现以下目标:
这是视图模型:
[Required]
public Gender Gender { get; set; }
视图:
<label class="control-label col-md-3 required" asp-for="Gender"></label>
的CSS:
.required:after {
content: "*";
font-weight: bold;
color: red;
}
但我不想在标签中手动添加所需的css类。不知怎的,我可以扩展LabelTagHelper来读取模型数据注释,如果它有[Required],那么在label元素中添加必需的类。
谢谢,
答案 0 :(得分:3)
是的,您可以通过继承Array([11] => 100, [11] => 100, [11] => 100)
类并首先将自己的类添加到属性列表中来轻松扩展它。
LabelTagHelper
答案 1 :(得分:0)
由于 Value 和 Reference 类型的处理方式不同,以下代码可能会有所帮助:
public override async Task ProcessAsync(TagHelperContext context,TagHelperOutput output)
{
await base.ProcessAsync(context, output);
if (RequiredAttributeExists(For.Metadata))
{
output.AddClass("required", HtmlEncoder.Default);
}
}
private static bool RequiredAttributeExists(ModelMetadata metaData)
{
if (metaData.ModelType.IsValueType)
{
return metaData.ValidatorMetadata.Any(x => x is RequiredAttribute);
}
else // not value type
{
return metaData.IsRequired;
}
}