は、公正オプションであり、おそらく始めるために最低のオーバーヘッドがありますが、戻って[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));
}
は、完全sourceでdocumentation、および使用方法を説明するblog post。
はい、DisplayNameが既に定義されているので、明示的に渡すのではなく、 'MyRequiredAttribute'コンストラクタの' DisplayName'メタデータプロパティを読んでください。 –
以下のリンクに従って、 'name'パラメータは、フォーマットされたメッセージに含まれる名前です.hms://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.formaterrormessage。 aspx – Joshua