【问题标题】:FoolProof MVC GreaterThan not working with timeFoolProof MVC GreaterThan 不与时间一起工作
【发布时间】:2017-02-26 00:52:26
【问题描述】:

我已经添加了不显眼的.. 等所有作品,除非我的第二个日期字段上有 GreaterThan

开始日期:2017/02/25 12:00 AM 结束日期: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; }

`

更新 这是我使用的组件https://eonasdan.github.io/bootstrap-datetimepicker/,它使用 moment.js 作为日期格式

【问题讨论】:

  • 我怀疑这里的问题是您的日期不是 jquery.validate.js 客户端验证的有效格式,它使用 MM/dd/yyyy 或 ISO 格式 - 尝试分别输入 2017-02-25 12:00 AM2017-02-25 01:03 PM (这将是有效的),然后说2016-02-25 01:03 PM作为结束日期,这将给出客户端错误消息
  • 我正在使用的组件使用momentjs.commomentjs 作为其约会格式,我似乎无法找到适合 jquery 日期的组件
  • 刚刚检查了万无一失的脚本,即使我上面提到的格式也不起作用。问题是mvcfoolproof.unobtrusive.js 文件中的var isDate = function (input) { .. 函数 - 正则表达式失败,因此基于string 进行比较,而不是date
  • 您需要使用通过正则表达式的格式 - 例如02/25/2017 12:00 AM02/25/2017 01:03 PM
  • momentjs 似乎不支持格式:"MM/DD/YYYY hh:mm a"

标签: asp.net-mvc validation foolproof-validation


【解决方案1】:

我认为这对你有用。

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

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2013-11-11
    • 2016-01-11
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多