2012-03-29 135 views
0

所以我有一个自定义属性的问题,我想添加到所有必填字段。现在,如果需要扩展我的所有帮助类以将此属性包括到输入中,我想知道是否可以节省大量时间并将其添加到自定义必需属性中。通过mvc添加自定义属性到字段验证属性扩展

事情是这样的:

型号:

[MyCustomRequiredValidator] < - 我希望将其添加在validationAttribute扩展 公众诠释? myField

我显然不能通过ModelClientValidationRule添加它,因为它将data-val属性作为前缀,这是不好的,但我似乎无法访问属性本身。我试过使用metadata.AdditionValue.add,但没有喜悦。

我想添加的属性是屏幕阅读器支持的aria-required =“true”。

这可能吗?

任何建议都会很棒,因为我碰到了一堵墙。

感谢寻找。

回答

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

希望这有助于人们:-)