自定义工作日日期验证需要实现或识别文化

时间:2013-04-17 08:19:25

标签: c# javascript jquery asp.net-mvc

这个 的方式类似于昨天的问题,因为它与浏览器中Date类型的格式和格式有关。

Date validation allows invalid dates

我正在处理jQueryJavascriptMVC,这可能就是我不断打砖墙的原因,因为我无法理解接下来要做什么。我正在创建一个简单的假期请求应用程序请求日期必须是工作日。

我昨天跟进了this,这就是我所拥有的。

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,类似于我之前的问题中的验证(似乎只允许*/*/*,其中*是数字)。

我的问题是,有没有办法在整个MVC网站上强制我的日期为UK格式?如何强制UK格式?

1 个答案:

答案 0 :(得分:0)

@jbl's这是一个很棒的呐喊。我已将date中的jquery.validation.js验证修改为如下:

$jQval.addMethod("weekdaydate", function(value, element, params) {
  var day = new moment(value, "DD-MM-YYYY").day();
  return day != 0 && day != 6;
});