文章出處
文章列表
今天在招聘頻道(job.cnblogs.com)遭遇這樣一個問題——在360瀏覽器下,在一個表單驗證中,雖然輸入了有效的日期,卻總是提示日期格式錯誤,見下圖:
而在Chrome/Safari/Firefox中都正常。
這個表單驗證用的是jquery.validate.js + jquery.validate.unobtrusive.js,驗證代碼是由ASP.NET MVC自動生成的。
視圖中的代碼是這么寫的:
<label>截止日期<em>*</em>:</label> @Html.TextBoxFor(m => m.ExpireDate, new { @class = "date", Value = Model.ExpireDate.Value.ToString("yyyy-MM-dd") }) @Html.ValidationMessageFor(m => m.ExpireDate)
ViewModel中是這么聲明的:
[DataType(DataType.DateTime, ErrorMessageResourceType = typeof(CommonValidationMessage), ErrorMessageResourceName = "DateTime")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "yyyy-MM-dd")] public DateTime? ExpireDate { get; set; }
折騰半天無果。。。
后來轉念一想,何必糾結于日期類型,直接用正則表達式驗證不是更簡單嗎?
于是——
視圖中去掉class="date":
<label>截止日期<em>*</em>:</label> @Html.TextBoxFor(m => m.ExpireDate, new { Value = Model.ExpireDate.Value.ToString("yyyy-MM-dd") }) @Html.ValidationMessageFor(m => m.ExpireDate)
ViewModel中的聲明改為:
[RegularExpression(@"\d\d\d\d-\d\d-\d\d", ErrorMessage = "請輸入正確的日期格式(yyyy-MM-dd)")] public DateTime? ExpireDate { get; set; }
問題解決。
文章列表
全站熱搜