我正在尝试显示日期。我的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)并忽略文化设置。
答案 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;
}