问题描述
我需要为我的模型属性捕获日期和时间.在我的模型类中,我有以下内容
[必填][数据类型(DataType.DateTime)]公共日期时间?回调日期 { 获取;放;}
当我输入有效的日期时间(例如 28/05/2015 15:55
)时,我不断收到此错误 CallBackDate 字段必须是日期.
>
我看过类似的问题并尝试了各种答案,但似乎没有什么能解决这个问题.我正在使用不显眼的客户端验证,但我无法禁用它.
输入框的来源有如下标记
"<input autocomplete="off" class="jquery_datetimepicker form-control hasDatepicker" data-val="true" data-val-date="CallBackDate 字段必须是日期."data-val-required="CallBackDate 字段是必需的."id="CallBackDate" name="CallBackDate" placeholder="输入您的 CallBackDate" type="text" value="">
和 jquery 日期时间选择器具有以下标记
$('.jquery_datetimepicker').datetimepicker({dateFormat: 'dd/mm/yy',最小日期:0,showWeeks: 真,显示状态:真,亮点周:真实,月数:1,showAnim: "缩放",显示选项:{原点:[顶部",左侧"]},时间格式:'hh:mm tt'});
有什么想法吗?谢谢
客户端验证问题可能由于 jquery.validate.unobtrusive.min.js 中的 MVC 错误(即使在 MVC 5 中)而发生不以任何方式接受日期/日期时间格式.它不是由日期选择器或浏览器引起的.不幸的是,您必须手动解决它.
我最终可行的解决方案:
您必须先包含:
@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:
安装包 Moment.js
然后你终于可以为日期格式解析器添加修复:
$(function () {$.validator.methods.date = 函数(值,元素){返回 this.optional(element) ||时刻(值,DD.MM.YYYY",真).isValid();}});
I need to capture date and time both for my model property. In my model class I have the following
[Required]
[DataType(DataType.DateTime)]
public DateTime? CallBackDate { get; set; }
When I enter a valid date time (e.g. 28/05/2015 15:55
) I keep getting this error The field CallBackDate must be a date.
I have seen similar question and tried various answers but nothing seems to get rid of this. I m using unobtrusive client side validation and I can't disable it.
The source of the input field has the following markup
<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="">
And jquery datetime picker has the following markup
$('.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'
});
Any ideas? thanks
Client validation issues can occur because of MVC bug (even in MVC 5) in jquery.validate.unobtrusive.min.js which does not accept date/datetime format in any way. It is not caused by datepicker nor browsers. Unfortunately you have to solve it manually.
My finally working solution:
You have to include before:
@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")
You can install moment.js using:
Install-Package Moment.js
And then you can finally add fix for date format parser:
$(function () {
$.validator.methods.date = function (value, element) {
return this.optional(element) || moment(value, "DD.MM.YYYY", true).isValid();
}
});
这篇关于如何修复mvc中日期时间属性上的“字段必须是日期"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!