Asp.net mvc 4 ASP.Net MVC4:字段xxx必须是日期
我对EditorFor(DateTime)函数有问题。我有一个这样定义的模型: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
[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