1

私のモデルは 2 つの日付プロパティを保持しています。日付範囲を制限したいので、データ注釈属性を配置して検証します。

        [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. <system.web次のセクションを web.config に追加します。

    <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 に答える