这个是在某种程度上类似于我昨天的问题,因为它涉及到浏览器的Date
类型的格式和格式化。
日期验证允许无效日期
我正在掌握jQuery
, Javascript
和MVC
,这可能是为什么我不断地打砖墙,因为我不明白下一步该做什么。我正在创建一个简单的假期请求应用程序。请求日期必须是工作日。
我昨天完成了这个,这是我的东西。
public class WeekdayAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
DateTime dt;
if (DateTime.TryParse(value.ToString(), out dt))
return dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday;
else
return false;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationRule()
{
ErrorMessage = ErrorMessage,
ValidationType = "weekdaydate"
};
}
}
然后在jQuery.validate.unobtrusive
$jQval.addMethod("weekdaydate", function(value, element, params) {
var day = new Date(value).getDay();
return day != 0 && day != 6;
});
这个功能工作得很好,因为如果我输入一个无效的US
日期,它将很好地验证并显示一条消息。然而,它忽略了我的机器和浏览器是UK
,类似于我之前问题中的验证(似乎只允许*/*/*
,其中*是一个数字)。
我的问题是,有没有办法强迫我的日期是UK
格式横跨整个MVC网站?如何强制UK
格式?
@jbl's
评论是一个伟大的呼喊。我修改了jquery.validation.js
中的date
验证如下:
$jQval.addMethod("weekdaydate", function(value, element, params) {
var day = new moment(value, "DD-MM-YYYY").day();
return day != 0 && day != 6;
});