Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 ASP.Net MVC4:字段xxx必须是日期_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 ASP.Net MVC4:字段xxx必须是日期

Asp.net mvc 4 ASP.Net MVC4:字段xxx必须是日期,asp.net-mvc-4,Asp.net Mvc 4,我对EditorFor(DateTime)函数有问题。我有一个这样定义的模型: [MetadataType(typeof(MessageSearchDTO_Validation))] public class MessageSearchDTO { public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } } public cl

我对EditorFor(DateTime)函数有问题。我有一个这样定义的模型:

    [MetadataType(typeof(MessageSearchDTO_Validation))]
    public class MessageSearchDTO
    {
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
    }

    public class MessageSearchDTO_Validation
    {
        [DisplayName("Od")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm}")]
        [Required(ErrorMessage = ErrorMessages.FieldRequired)]
        public DateTime StartDate { get; set; }

        [DisplayName("Do")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm}")]
        [CustomValidation(typeof(MessageSearchDTO_Validation), "EndDate_CustomValidator")]
        [Required(ErrorMessage = ErrorMessages.FieldRequired)]
        public DateTime EndDate { get; set; }
}
问题是我想要一个时间编辑器的完整日期。但它只适用于Chrome。在FF/IE中,我得到了这个javascript验证错误。 如果我将值设置为“10/23/2013 12:00:00 AM”,则效果良好。但是我如何强制使用我想要的日期时间格式呢

我甚至尝试实现自定义绑定器,但没有成功,因为这是客户端错误…

将ticks()而不是datetime字符串发送到客户端。然后使用javascript将记号解析为所需的日期格式

可以提供帮助。

将记号()而不是日期时间字符串发送到客户端。然后使用javascript将记号解析为所需的日期格式

能帮上忙。

我想也许能解决你的问题

将jQuery.validate.js中的日期验证方法更改为 下面解决了这个问题:

根据您的需求修改它们

我想可能会解决您的问题

将jQuery.validate.js中的日期验证方法更改为 下面解决了这个问题:

根据您的要求修改它们

帮助我的是:

    date: function (value, element) {
        if (value.indexOf(' ') != -1)
            value = value.replace(' ', 'T');
        return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
    },
我不太喜欢它:(不修改jquery,难道不可能用一种很好的方式完成吗?

帮助我的是:

    date: function (value, element) {
        if (value.indexOf(' ') != -1)
            value = value.replace(' ', 'T');
        return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
    },

我不太喜欢:(在不修改jquery的情况下,难道不可能用一种很好的方式来实现吗?

AthibaN的答案是正确的。您需要包括globalize.js和globalize.yourRegionHere.js

我的解决方案是在jquery加载脚本标记后添加布局文件

  $(function () {
                    $.validator.methods.date = function (value, element) {
                     Globalize.culture("bs-Latn-BA");

             return this.optional(element) || Globalize.parseDate(value)     !== null;
                }
            });

这样就不那么麻烦了。

AthibaN的答案是正确的。您需要包括globalize.js和globalize.yourRegionHere.js

我的解决方案是在jquery加载脚本标记后添加布局文件

  $(function () {
                    $.validator.methods.date = function (value, element) {
                     Globalize.culture("bs-Latn-BA");

             return this.optional(element) || Globalize.parseDate(value)     !== null;
                }
            });

这样就不那么麻烦了。

发送勾号?问题是在将数据发送回服务器之前进行客户端验证。我的意思是,如果您使用勾号传输日期,您可以在您使用的任何浏览器中处理它。据我所知,您发送的日期是类似“10/23/2013 12:00:00 AM”的字符串,这可能不是浏览器之间的通用格式,但ticks是通用格式。谢谢。发送ticks?问题是在将数据发送回服务器之前进行客户端验证。我的意思是,如果使用ticks传输日期,则可以使用任何浏览器来处理。据我所知,您将以字符串形式发送日期,如“10/23/2013 12:00:00 AM”,这可能不是浏览器之间的通用格式,但勾号是通用格式。谢谢。我需要添加
Globalize
文件或函数吗?这对我来说非常适合。我在Safari浏览器中遇到过这个问题。我需要添加
Globalize
文件或函数吗?这对我来说非常适合。我在Safari browse中遇到过这个问题R