2013-04-21 69 views
8

即時通訊使用我的jQuery datepicker時,面臨此錯誤。字段'日期'必須是日期MVC 4

的jQuery:

$(".datepicker").datepicker({ 
    defaultDate: +7, 
    autoSize: true, 
    dateFormat: 'dd.mm.yy', 
}); 

型號:

[DisplayName("Date")] 
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)] 
[Required(ErrorMessage = "Date is required")] 
public DateTime Date { get; set; } 

所以我想要的日期格式要像dd.MM.yyyy,當我使用日期選擇器選擇日期是正確添加到現場。但同樣在同一秒內,出現驗證錯誤說The field 'Date' must be a date

我做了測試,手動寫入格式爲dd/MM/yy的日期,然後它看起來像是在工作。所以驗證器在某處查找該格式,但我無法找到修改它的位置。

+0

您是否得到了應有的工作?如果沒有,你可以試試我的答案。 – technicallyjosh 2013-06-11 15:49:30

+0

你不需要圍繞+7引號(如'+7')嗎? – Tessmore 2013-06-11 20:41:23

回答

0

DisplayFormat將不是驗證中接受的格式。我建議使用正則表達式來驗證這個,如果你想在那裏有句點。

[DisplayName("Date")] 
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)] 
[Required(ErrorMessage = "Date is required")] 
[RegularExpression(@"PUT REGEX HERE", ErrorMessage = "Invalid Date")] // below is a link 
public DateTime Date { get; set; } 

Some common expressions here.

另外,我建議從C#去JS的當是在格式上保持一致。

你有JS:

dateFormat: 'dd.mm.yy' 

你可能想:

dateFormat: 'dd.mm.yyyy' 

你也可以只改變模型上的DisplayFormat屬性只是dd.MM. yy也是如此。只是一個想法!

0

修改在https://stackoverflow.com/a/17968454/4955259提供的答案似乎對我來說日期格式dd.mm.yy(在jquery.validate後添加腳本。 JS)。

jQuery.validator.methods.date = function (value, element) { 
    var d = value.split("."); 
    return this.optional(element) || !/Invalid|NaN/.test(new Date((/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) ? d[1] + "." + d[0] + "." + d[2] : value)); 
}; 
相關問題