4

Fluent Validation で ASP.NET MVC 3 を使用しています。検証エラー メッセージであろうと、モデル バインディング エラー メッセージであろうと、すべてのエラー メッセージの文言と形式を同じにしたいと考えています。

次のビューモデルがあるとしましょう:

[Validator(typeof(PersonValidator))]
public class Person
{
    [ScaffoldColumn(false)] public int    Id   { get; set; }
                            public string Name { get; set; }
                            public int    Age  { get; set; }
}

Fluent Validation を使用してこれを検証するには、次のようなものを使用します。

public class EditorValidator : AbstractValidator<EditorModel>
{
    public EditorValidator()
    {
        RuleFor(model => model.Month.Value).InclusiveBetween(0, 120)
    }
}

ユーザーが に「abc」を入力すると、検証エラーではなく、モデル バインディング エラーがAge発生します。これは、「abc」が. 「abc」は に格納できないため、システムは「abc」が 0 から 120 の間であるかどうかを確認することさえありません。intAge

これは問題なく、理にかなっています。問題は、結果のエラー メッセージが次のようになることです。

フィールド Age は数値でなければなりません。

Fluent Validation によって生成される他のエラー メッセージと同じように、メッセージの形式と文言を変更したいと考えています。この場合、次のことを希望します。

「年齢」は数字でなければなりません。

これは微妙な違いに過ぎないことはわかっていますが、モデル バインディングのエラー メッセージを制御したいと考えています。

モデル バインディングのエラー メッセージをカスタマイズして、Fluent Validation で使用されるエラー メッセージと一致させるにはどうすればよいですか?

4

2 に答える 2

4

これを行う別の方法があるかどうかはわかりませんが、この正確なタイプのものには、NuGet (Install-Package DataAnnotationsExtensions.MVC3) からも利用できるData Annotations Extensionsを使用します。このパッケージは を提供しIntegerAttribute、そこから次のようなエラー メッセージを指定できます。

[Integer(ErrorMessage = "'Age' must be a number.")]
public int Age { get; set; }
于 2011-06-27T03:31:19.367 に答える
0

ここで私の答えを見てください:

@Htmlヘルパーによって生成されている間にMVCで「data-val-number」メッセージ検証を変更する方法

実際、それはあなたが尋ねた非常に一般的な質問なので、投稿する前にスタックオーバーフローをグーグルで検索する必要があります。

于 2011-06-27T20:43:43.673 に答える