asp.net mvc 4で日時の形式を強制するにはどうすればよいですか?表示モードでは希望どおりに表示されますが、モデルの編集では表示されません。私はdisplayforとeditorforを使用しており、applyformatineditmode=trueをdataformatstring="{0:dd / MM /yyyy}"で使用しています。
- 私の文化とuicultureによるweb.config(両方)のグローバリゼーション。
- application_start()でカルチャとuicultureを変更する
- 日時用のカスタムmodelbinder
強制する方法がわからないので、日付をデフォルトではなくdd / MM/yyyyとして入力する必要があります。
詳細:私のビューモデルはこのようなものです
[DisplayName("date of birth")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Birth { get; set; }
私は使用しています@Html.DisplayFor(m=>m.Birth)
が、これは期待どおりに機能し(フォーマットが表示されます)、使用する日付を入力します@Html.EditorFor(m=>m.Birth)
が、13/12/2000のようなものを入力しようとすると、有効な日付ではないというエラーで失敗します(12 / 13/2000と2000/12/13は期待どおりに機能していますが、dd / MM/yyyyが必要です。
カスタムmodelbinderはapplication_start()b/cで呼び出されます。他の場所はわかりません。
を使用して、私にdd / MM/yyyyを与える他の文化を<globalization/>
試しました。culture="ro-RO", uiCulture="ro"
また、application_start()でスレッドごとに設定しようとしました(これを行う方法については、ここに多くの例があります)
この質問を読むすべての人のために:私がクライアントの検証を持っていない限り、DarinDimitrovの答えはうまくいくようです。別のアプローチは、クライアント側の検証を含むカスタム検証を使用することです。アプリケーション全体を再作成する前に、これを見つけてよかったです。