我已经制作了自己的翻译系统,我需要翻译验证属性产生的所有验证错误,我已经使用 DisplayNames 这样做了,如下所示:
public class MyCustomDataAnnotationModelProvider : DataAnnotationsModelMetadataProvider
{
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes, Type containerType, Func<object> modelAccessor, Type modelType, string propertyName)
{
var data = base.CreateMetadata(attributes, containerType, modelAccessor, modelType, propertyName);
if (data.DisplayName != null)
data.DisplayName = Translator.TranslateOnce(data.DisplayName);
return data;
}
}
这翻译了所有的 Display 属性::
[Required(ErrorMessage="message"), Display(Name="Language"), StringLength(10)]
public string LanguageName { get; set; }
所以基本上我想对验证错误做同样的事情,但我不知道如何迭代它们。有一个叫做 data.GetValidators() 的东西,但它需要 ControllerContext,我找不到。