因此,我想要添加到所有必填字段的自定义属性存在问题。现在,我想知道是否可以节省大量时间并将其添加到自定义必需属性中,而不是扩展所有帮助器类以将此属性包含在输入中。
这样的事情:
模型:
[MyCustomRequiredValidator]< - 我想在validationAttribute扩展中添加它 public int? MyField的
我显然不能只通过ModelClientValidationRule添加它,因为它在属性前面加上data-val-这是不行的,但我似乎无法访问属性本身。我尝试过使用metadata.AdditionValue.add,但没有欢乐。
我想添加的属性是aria-required =“true”,用于支持屏幕阅读器。
这可能吗?
任何建议都会很棒,因为我碰壁了。
感谢您的光临。
答案 0 :(得分:1)
好的,我找到了一个解决方案。我通过创建元数据时所有必需的验证器向元数据添加了一个标记(我还必须继承类声明中的IMetadataAware接口):
public void OnMetadataCreated(ModelMetadata metadata) {
metadata.AdditionalValues.Add("AriaRequired", "true");
}
然后,我扩展了所有输入字段助手以检查此值,并通过检查上述属性的存在性来为输入添加自定义属性,在本例中为AriaRequired。
if (htmlAttributes == null) htmlAttributes = new Dictionary<string, object>();
if (!htmlAttributes.ContainsKey("aria-required"))
{
ModelMetadata metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
htmlAttributes.Add("aria-required", metaData.IsAriaRequiredValue());
}
}
希望这有助于人们: - )