1

我的模型拥有两个日期属性。我想限制他们的日期范围,所以我放置了一个数据注释属性来验证它。

        [Display(ResourceType = typeof(FaultManagementStrings), Name = "FaultOpenDate")]
        [DataType(DataType.DateTime)]
        [Range(typeof(DateTime), "1900-01-01", "2500-01-01", ErrorMessage = "Invalid Date")]
        public DateTime FaultOpenDateTime { get; set; }

        [Display(ResourceType = typeof(FaultManagementStrings), Name = "FaultCloseDate")]
        [DataType(DataType.DateTime)]
        [Range(typeof(DateTime), "1900-01-01", "2500-01-01", ErrorMessage = "Invalid Date")]
        public DateTime FaultCloseDateTime { get; set; }

但是客户端验证对于任何有效日期都显示无效......我在这里做错了什么?

4

1 回答 1

4

ASP.NET MVC 和 jQuery Validate 预期的默认日期格式为 MM/DD/YYYY。如果您想使用特定文化的格式:

  1. 在 web.config 中添加<system.web以下部分:

    <globalization uiCulture="pl-PL" culture="pl-PL"/>

    这将设置您的 Web 应用程序的服务器端文化

  2. 使用jQuery Globalize插件在客户端支持该文化并覆盖期望 MM/DD/YYYY 格式的日期的默认验证器。您还应该覆盖范围验证器。

    Globalize.culture('pl-PL');
    jQuery.validator.methods['date'] = function (value, element) {
        return this.optional(element) || Globalize.parseDate(value);
    };
    jQuery.validator.methods['range'] = function (value, element, param) {
        var parsedValue = Globalize.parseDate(value) || Globalize.parseFloat(value),
            parsedParam1 = Globalize.parseDate(param[0]) || Globalize.parseFloat(param[0]),
            parsedParam2 = Globalize.parseDate(param[1]) || Globalize.parseFloat(param[1]);
        return this.optional(element) || (parsedValue >= parsedParam1 && parsedValue <= parsedParam2);
    };
    
  3. 看看如何在 jQuery Date Picker中设置格式

于 2013-02-23T19:00:24.087 回答