私は独自の翻訳システムを作成しました。検証属性によって生成されたすべての検証エラーを翻訳する必要があります。次のような 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;
}
}
そして、それはすべての表示属性を変換します::
[Required(ErrorMessage="message"), Display(Name="Language"), StringLength(10)]
public string LanguageName { get; set; }
基本的に、検証エラーでまったく同じことをしたいのですが、それらを反復する方法がわかりません。data.GetValidators() と呼ばれるものがありますが、見つけられない ControllerContext が必要です。