2011-07-12 74 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; } 

当我提交表单,我总是收到错误消息“的值'13/07/2011' 是无效的DtNews”因为系统互换天几个月...我需要有dd/mm/yyyy格式:我如何避免这个愚蠢的问题?

在此先感谢

回答

1

你可以在你的web.config文化设置一些培养的日期格式为dd/MM/yyyy。例如这与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

全球化不适合我。如果我把它放到global.asax中,第二个变体会抛出最后2条语句的“属性是只读的”异常BeginRequest – Andrei