独自の属性を派生させることは公正なオプションであり、おそらく開始するためのオーバーヘッドが最も低くなりますが、戻って の既存の使用をすべて変更する必要があります[Required]
。あなた (およびあなたのチームの他のメンバー) は、今後も正しいものを使用することを覚えておく必要があります (そして、初心者に使用するように教える必要があります)。
別の方法として、 を置き換えてModelMetadataProviders
、ModelValidatorProviders
リソース ファイルから文字列を返すこともできます。これにより、上記の欠点が回避されます。MaxLengthAttribute
また、メッセージを他の属性 ( など) に置き換えたり、追加の言語をサポートしたりするための土台も築きます。
protected void Application_Start()
{
var stringProvider = new ResourceStringProvider(Resources.LocalizedStrings.ResourceManager);
ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider(stringProvider));
}
完全なソース、ドキュメント、および使用方法を説明するブログ投稿を次に示します。