2017-02-26 46 views
0

工作,我已經添加了不顯眼的..等等,除非我有GREATERTHAN我的第二個日期字段的所有作品萬無一失MVC GREATERTHAN不隨時間

開始日期:2017年2月25日12:00 AM 結束日期:2017年/ 02/25 01:03 PM

它似乎認爲結束日期不是更大,我假設它做一個字符串比較vs適當的日期,因爲這是一個有效的範圍,因爲結束日期大於開始但如果我們正在做一個字符串比較,那麼結束日期不會更大

這裏是我的代碼

[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; } 

`

更新 這是我使用https://eonasdan.github.io/bootstrap-datetimepicker/它採用moment.js其日期格式

+0

我懷疑這裏的問題是,你的日期是不是在'jquery.validate.js'客戶端驗證它使用'MM/DD/yyyy'或ISO格式的有效形式 - 嘗試輸入'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){..'函數 - 正則表達式失敗,因此根據'string',而不是'date'進行比較。 –

回答

0

我覺得這對你的作品的組成部分。

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" }); 
     } 

    }