如何修复mvc中日期时间属性上的“字段必须是日期" [英] how to fix 'The field must be a date' on a datetime property in mvc

查看:14
本文介绍了如何修复mvc中日期时间属性上的“字段必须是日期"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为我的模型属性捕获日期和时间.在我的模型类中,我有以下内容

[必填][数据类型(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中日期时间属性上的“字段必须是日期"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆