2

入力モデルを検証するために、ASP.NET MVC アプリケーションで DataAnnotions を使用しています。エラー メッセージにリソース ファイルを使用する場合は、次のように、名前付きパラメーターを使用してこれらを指定する必要があります。

[Required(
    ErrorMessageResourceType = typeof(Validation),
    ErrorMessageResourceName = "NameRequired")]

これを一連のファイルで使用するので、次のようなコンストラクターを使用できれば、はるかに簡単 (かつ読みやすく) になると思いました。

[Required(typeof(Validation), "NameRequired")]

独自のカスタム検証属性を作成すると、そのような「単純なコンストラクター」を実装できます。

public class MyCustomValidationAttribute : ValidationAttribute
{
    public MyCustomValidationAttribute(Type resourceType, string resourceName)
    {
        base.ErrorMessageResourceType = resourceType;
        base.ErrorMessageResourceName = resourceName;
    }
}

ここで何か足りないのでしょうか、それとも Microsoft の DataAnnotations チームに余分な行を書いてもらいたいのでしょうか? :-)

編集:

明確にするために、「Validation.resx」というリソースファイルがあります。

4

2 に答える 2

0

私はあなたの言うことを聞き、あなたの痛みを感じます。データ注釈が必要な何千ものアイテムを含むデータベースがあります。

1つのオプションは、リソースファイルを使用することです。最初はもっと手間がかかるように思えるかもしれませんが、「名前が必要」などの単純な目的でリソースを再利用できます。いくつかのリードについては、このStackOverflowアイテムを参照してください。

于 2010-08-21T21:22:43.633 に答える
0

この Github 拡張機能を見ると、よりクリーンなコードが得られます: http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx

于 2013-05-03T10:51:33.877 に答える