4

ビューモデルで次のように宣言されたプロパティがあります。

    [Required(ErrorMessage = "The Date field is required for Start.")]
    [Display(Name = "Start")]
    public DateTime DateStart { get; set; }

ただし、デフォルトの The Start field is requiredエラー メッセージがまだ表示されます。これは、null 非許容DateTimeが暗黙的に必要であり、Required属性が無視されるためだと思います。null 可能にする以外に、これらの特定のプロパティのエラー メッセージをカスタマイズする方法はありますか?

4

2 に答える 2

2

あなたの問題は、あなたのプロパティがnull可能ではないということです。null を許容しないプロパティの場合、属性Requiredは無意味です。StartDate 値がない場合、検証はRequired属性に行われず、前のステップで失敗します。取得したい場合は、ErrorMessage次を使用する必要があります。

[Required(ErrorMessage = "The Date field is required for Start.")]
[Display(Name = "Start")]
public DateTime? DateStart { get; set; }

ModelBinding で null を取得する null 非許容型の ErrorMessage をカスタマイズすることはできません。これは、MVC フレームワークの奥深くでハードコーディングされているためです。

于 2012-12-05T06:32:09.673 に答える
0

MVC 4 で新しいテスト プロジェクトを更新し、テスト モデルを作成することから始めました。

    public class TestModel {
        [Required(ErrorMessage = "The Date field is required for Start.")]
        [Display(Name = "Start")]
        public DateTime DateStart { get; set; }

    }

次に、私のモデルではこれを持っています:

@using(Html.BeginForm()){
    @Html.ValidationMessageFor(a => a.DateStart);
    @Html.TextBoxFor(a => a.DateStart)
    <input type="submit" value="add"/>
}

テキスト ボックスを削除して [送信] をクリックすると、デフォルトではなく、カスタマイズされたエラー メッセージが表示されます。

The Date field is required for Start.

これは私には理にかなっています。これが多言語アプリケーションである場合、その国に合わせてエラー メッセージをカスタマイズする必要があることを想像してみてください。カスタマイズされたメッセージの必要性を理解するのにロケット科学者は必要ありません。そして、MVCチームがそれをカバーしてくれることを期待しています。

于 2012-12-05T11:06:20.107 に答える