在我的ASP MVC 5 Web應用程序中,我需要以特定格式顯示日期。加載頁面時,文本格式正確。但是,如果你編輯的值或者幹脆嘗試後,顯示的驗證錯誤:ASP MVC 5日期格式驗證問題
的字段定義是這樣的:
@*Creation*@
<div class="form-group">
@Html.LabelFor(model => model.Creation, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Creation, "{0:dd/MM/yyyy}", new { @class = "form-control"})
@Html.ValidationMessageFor(m => m.Creation)
</div>
</div>
視圖模型屬性定義爲:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Creation", ResourceType = typeof(Resources.Resources))]
public DateTime Creation { get; set; }
該屏幕截圖是使用Firefox瀏覽器創建的。如果我在Edge上執行同樣的操作,驗證通過,但post方法中此屬性的綁定無效(默認日期值)。
我該如何解決這個問題?
馬特·斯平克斯指出,這是一個'jquery.validate.js'問題(它驗證基於'MM/dd/yyyy'的日期),你需要重寫驗證器(參考[這個答案](http://stackoverflow.com/questions/30594128/error-in-date-validation-mvc/30609111 #30609111) –
它在Edge(和Chrome)中工作的原因是因爲你有'[DataType(DataType.Date)] ''生成'type =「date」''這意味着瀏覽器將實現一個DatePicker將被顯示,但爲了使其正常工作,您需要使用'DataFormatString =「{0:yyyy-MM-dd}」(ISO格式) –
另請參閱[這個答案](http://stackoverflow.com/questions/39677035/date-of-birth-validation-keeps-showing/39682410#39682410)其中包括一個腳本,你可以在你的視圖中包含一個腳本,用於客戶端驗證。 –