2011-07-12 124 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