0

所以我有一个关于我想添加到所有必填字段的自定义属性的问题。现在,如果需要,我没有扩展我的所有帮助程序类以将此属性包含到输入中,而是想知道是否可以节省大量时间并将其添加到自定义必需属性本身中。

像这样的东西:

模型:

[MyCustomRequiredValidator]<--我想在validationAttribute扩展public int中添加它?我的领域

我显然不能只通过 ModelClientValidationRule 添加它,因为它在属性前面加上 data-val- 这不好,但我似乎无法访问属性本身。我试过使用 metadata.AdditionValue.add 但那里没有乐趣。

我要添加的属性是 aria-required="true" 以支持屏幕阅读器。

这可能吗?

任何建议都会很棒,因为我碰壁了。

感谢您的关注。

4

1 回答 1

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());
    }
}

希望这可以帮助人们:-)

于 2012-04-11T10:19:19.250 回答