使用jQuery datepicker插件用於選擇數據範圍的剃刀形式有兩個日期字段顯示爲文本框。開始日期正常工作,但結束日期未通過驗證,並顯示「字段結束日期必須是日期。」下面是型號代碼和.cshtml代碼:Razor DateField驗證失敗,說「必須是日期」
[Display(Name = "Start Date")]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
public Nullable<DateTime> endDate { get; set; }
<div id="dvDateRange">
@Html.TextBoxFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.TextBoxFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
兩人都被設置相同,爲什麼會開始日期成功,結束日期會失敗?
任何想法?
編輯
所以絕對是一個文化問題,似乎是Chrome瀏覽器是造成問題的原因。 做了以下修改,仍然遇到同樣的問題。
型號代碼:
[Display(Name = "Start Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> startDate { get; set; }
[Display(Name = "End Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> endDate { get; set; }
.cshtml代碼:
<div id="dvDateRange">
@Html.EditorFor(e => e.startDate, new { @class = "datepicker", Value = Model.startDate.Value.ToString("dd/MM/yyyy") })
<span> to </span>
@Html.EditorFor(e => e.endDate, new { @class = "datepicker", Value = Model.endDate.Value.ToString("dd/MM/yyyy") })
</div>
日期選擇器代碼:
$("#dvDateRange input").datepicker({
showOn: "button",
buttonImage: "/Images/calendar.gif",
buttonImageOnly: true,
dateFormat: "dd/mm/yy"
});
反正在Chrome中壓倒一切的文化設置?
很可能你在瀏覽器和服務器上有不同的文化。 5月的開始日期是正確的,因爲這一天少於12天(因此2014年6月5日是兩種格式的有效日期:2014年6月5日和2014年5月6日) – ssimeonov
這似乎是合理的。如何強制它使用整個格式? – HuwD
你可以檢查這個http://stackoverflow.com/questions/1328025/jquery-ui-datepicker-change-date-format – ssimeonov