【问题标题】:Why does MVC FluentValidation InclusiveBetween always Fires Error with DateTime?为什么 MVC FluentValidation InclusiveBetween 总是使用 DateTime 触发错误?
【发布时间】:2015-05-07 16:15:45
【问题描述】:

如果我在视图模型中有一个属性,例如:

 [DataType(DataType.DateTime)]
 public DateTime? MyDate{ get; set; }

还有这样的验证规则:

public class YourDetailsViewModelValidator : AbstractValidator<YourDetailsViewModel>
{
    public YourDetailsViewModelValidator()
    {           
        RuleFor(x => x.MyDate)                
            .InclusiveBetween(startDate, endDate)
               .WithMessage("error");
    }                       
}

为什么无论输入什么日期都会触发错误?

我确实看到enter link description here发生了类似的事情,但答案最终被接受了,所以我希望它可以正常工作。

【问题讨论】:

  • 你说的是客户端还是服务器端失败,你检查值绑定是否正确?
  • 它在客户端。这一切似乎都被正确地绑定了。

标签: asp.net-mvc fluentvalidation


【解决方案1】:

错误可以通过 jquery.validate 插件日期格式和 MVC 助手格式的差异来解释。只需查看您的视图生成的 html,然后使用

[DisplayFormat(DataFormatString="...")] // format string instead of dots

使data-val-mindata-val-max 属性符合输入value 格式(当然,如果不符合)。

如果值和验证属性格式相同,但验证仍然失败 - 请确保 jquery.validate 具有适当的格式。在这种情况下,您应该更改 ASP.NET MVC 应用程序文化以符合 jquery.validate 格式,反之亦然 — 更改 jquery.validate 格式以符合应用程序。

在 SO 上提出的类似问题:

First

Second

.NET 日期格式选项可用here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多