2011-07-12 14 views
2

私は自分のプロパティを定義したViewModelを持っています。そのうちの一つは以下のように定義DateTimeフィールドです:aspnet mvcで日付を検証する

[DisplayName("Data")] 
    [DataType(DataType.Date)]   
    [Required(ErrorMessage="Selezionare una data")] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
    public DateTime? DtNews { get;set; } 

私はフォームを送信すると、私は常にエラーMSGを受信「値'13/07/2011' のDtNewsには有効ではありません」システムスワップの日理由と月... dd/mm/yyyy形式が必要です:どうすればこのばかげた問題を回避できますか?事前

答えて

1

ありがとうございます日付形式がdd/MM/yyyyであるため、いくつかの文化にあなたのweb.configファイル内の文化を設定することができます。 it-ITの場合ですたとえば:

<globalization culture="it-IT" uiCulture="it-IT"/> 

は、デフォルトでは文化がautoに設定されています。つまり、ASP.NETはブラウザの設定を使用してクライアントのカルチャを推定します。したがって、ブラウザがen-USを使用するように設定されている場合、日付の形式はMM/dd/yyyyになります。

別の可能性は、現在のスレッドのカルチャの書式を設定することです:

var dtfi = (DateTimeFormatInfo)Thread.CurrentThread.CurrentCulture.DateTimeFormat.Clone(); 
dtfi.ShortDatePattern = "dd/MM/yyyy"; 
dtfi.DateSeparator = "/"; 
Thread.CurrentThread.CurrentCulture.DateTimeFormat = dtfi; 
Thread.CurrentThread.CurrentUICulture.DateTimeFormat = dtfi; 
+0

おかげでそんなに、それは素晴らしい仕事を! – Cris

+0

グローバリゼーションがうまくいかない2番目のバリアントは、global.asax BeginRequestに入れると、最後の2つのステートメントの "プロパティは読み取り専用"のような例外をスローします – Andrei