2017-02-26 4 views
0

で作業していないなど、私は私の第二日付フィールドに演算子:GreaterThanを持っている場合を除き、すべての作品確実なMVC演算子:GreaterThanは私が..控えめを追加した時

開始日:2017年2月25日午前12:00 終了日:2017/02/25 01:03 PM

終了日はそれほど長くないと思うようですが、終了日が開始時刻よりも大きいので有効な範囲であるため、文字列比較と適切な日付の間の処理を想定しています私たちが文字列の比較を行っている場合、終了日はそれ以上ではありません

ここは私のコードです

[Required] 
    [DataType(DataType.DateTime)] 
    [Display(ResourceType = typeof(DisplayResources), Name = "StartDateTime")] 
    public DateTime StartDateTime { get; set; } 

    [Required] 
    [DataType(DataType.DateTime)] 
    [Display(ResourceType = typeof(DisplayResources), Name = "EndDateTime")] 
    [GreaterThan("StartDateTime")] 
    public DateTime EndDateTime { get; set; } 

`

更新 これは、私はこれがあなたのために働くと思う私はその日付形式のためmoment.jsを使用する

+0

私はここでの問題は、あなたの日付は 'MM/DD/yyyy'またはISO形式を使用しています' jquery.validate.js'クライアント側の検証のための有効な形式になっていないということである疑いがある - '2017-を入力してみてください「02-25 12:00 AM」と「2017-02-25 01:03 PM」と表示され、終了日には「2016-02-25 01:03 PM」と表示され、クライアントに側のエラーメッセージ –

+0

私が使用しているコンポーネントは、https://momentjs.com/ momentjsを日付形式に使用しています。jquery日付で動作する正しいものを見つけるようです。 – Zoinky

+0

簡単なスクリプトとフォーマット上記のことはうまくいきません。問題は、 'mvcfoolproof.unobtrusive.js'ファイルの' var isDate = function(input){..'関数です。正規表現は失敗し、 'date'ではなく' string'に基づいて比較を行います。 –

答えて

0

https://eonasdan.github.io/bootstrap-datetimepicker/を使用していますコンポーネントです。

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (StartDateTime> EndDateTime) 
     { 
      yield return 
     new ValidationResult(errorMessage: "End date must be greater than Start date", 
          memberNames: new[] { "EndDateTime" }); 
     } 

    } 
関連する問題