在ASP.NET MVC 3中格式化DateTime

时间:2012-06-21 14:16:02

标签: asp.net-mvc datetime

我正在尝试显示日期。我的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; }

显示时一切正常。但是当我想提交一个表单时,如果第一个数字大于12,则它不会通过验证,因为它预期日期格式为MM.dd.yyyy而不是dd.MM.yyyy。 如何强制模型绑定器使用我的DateTime模式(dd.MM.yyyy)并忽略文化设置。

2 个答案:

答案 0 :(得分:1)

  

如何强制模型绑定器使用我的DateTime模式(dd.MM.yyyy)   并忽略文化背景。

您可以编写一个自定义模型活页夹,它将考虑您在DisplayFormat属性中指定的格式:https://stackoverflow.com/a/7836093/29407

答案 1 :(得分: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;
}