我需要为我的模型属性捕获日期和时间.在我的模型课中,我有以下内容
[required] [DataType(DataType.DateTime)] public DateTime? CallBackDate { get; set; }
当我输入有效的日期时间(例如2015年5月28日15:55)时,我不断收到此错误.字段CallBackDate必须是日期.
我已经看到类似的问题并尝试了各种答案,但似乎没有什么可以摆脱这个.我使用不显眼的客户端验证,我无法禁用它.
输入字段的来源具有以下标记
<input autocomplete="off" class="jquery_datetimepicker form-control hasDatepicker" data-val="true" data-val-date="The field CallBackDate must be a date." data-val-required="The CallBackDate field is required." id="CallBackDate" name="CallBackDate" placeholder="Enter your CallBackDate" type="text" value="">
并且jquery日期时间选择器具有以下标记
$('.jquery_datetimepicker').datetimepicker({ dateFormat: 'dd/mm/yy',minDate: 0,showWeeks: true,showStatus: true,highlightWeek: true,numberOfMonths: 1,showAnim: "scale",showOptions: { origin: ["top","left"] },timeFormat: 'hh:mm tt' });
有任何想法吗?谢谢
解决方法
由于jquery.validate.unobtrusive.min.js中的MVC错误(即使在MVC 5中),它不会以任何方式接受日期/日期时间格式,因此可能会发生客户端验证问题.它不是由datepicker或浏览器引起的.不幸的是你必须手动解决它.
我最终的解决方案:
你必须包括:
@Scripts.Render("~/Scripts/jquery-3.1.1.js") @Scripts.Render("~/Scripts/jquery.validate.min.js") @Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") @Scripts.Render("~/Scripts/moment.js")
您可以使用以下命令安装moment.js:
Install-Package Moment.js
然后你最终可以为日期格式解析器添加修复:
$(function () { $.validator.methods.date = function (value,element) { return this.optional(element) || moment(value,"DD.MM.YYYY",true).isValid(); } });