1

日付を表示しようとしています。私のviewmodelコードのサンプルは以下の通りです:

[Display(Name = "Date of birth")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date, ErrorMessage = "Enter correct date (e.g. 23.05.1980)")]
public DateTime CustomerBirthday { get; set; }

表示すればOKです。しかし、フォームを送信するときに、最初の数値が 12 より大きい場合、検証に合格しません。これは、dd.MM.yyyy ではなく MM.dd.yyyy 形式の日付が必要であるためです。モデル バインダーに DateTime パターン (dd.MM.yyyy) を強制的に使用させ、カルチャ設定を無視させるにはどうすればよいですか。

4

2 に答える 2

1

DefaultModelBinder、フォームデータにサーバーのカルチャ設定を使用します。したがって、サーバーは「en-US」カルチャを使用していると言えますが、日付形式は異なります。

あなたはでこのようなことをすることができます、Application_BeginRequestそしてあなたは終わりです!

protected void Application_BeginRequest()
{
    CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString());
    info.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy";
    System.Threading.Thread.CurrentThread.CurrentCulture = info;
}
于 2012-06-21T15:32:08.377 に答える
1

モデル バインダーに DateTime パターン (dd.MM.yyyy) を強制的に使用させ、カルチャ設定を無視させるにはどうすればよいですか。

DisplayFormat 属性で指定した形式を考慮したカスタム モデル バインダーを作成できます: https://stackoverflow.com/a/7836093/29407

于 2012-06-21T14:20:40.843 に答える