为什么MVC FluentValidation InclusiveBetween始终使用DateTime触发错误?

时间:2015-05-06 14:40:04

标签: asp.net-mvc fluentvalidation

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

 [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,但答案最终被接受,所以我希望它可以正常工作。

1 个答案:

答案 0 :(得分:0)

错误可以通过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