我想在我的MVC项目中使用Fluent验证(http://fluentvalidation.codeplex.com)制定2条规则.
公司和名称均为空时,不会发生任何事情.
如果其中任何一个被填满,也不会发生任何事情.
如果未填写公司或名称,则在两者上都显示标签. (错误信息可能相同)
到目前为止我试过这个:
RuleFor(x => x.Name)
.NotEmpty()
.WithMessage("Please fill in the company name or the customer name")
.Unless(x => !string.IsNullOrWhiteSpace(x.Company));
RuleFor(x => x.Company)
.NotEmpty()
.WithMessage("Please fill in the company name or the customer name")
.Unless(x => !string.IsNullOrWhiteSpace(x.Name));
我尝试过When,Must和unless的组合,但它们都不起作用.当我什么都没有填写时,这2个属性上没有显示任何错误.
谁能帮我吗?
最佳答案 从评论看来,问题似乎是启用客户端验证,规则实际上是在回发后工作.如
FluentValidation wiki中所述,唯一受支持的客户端规则是
> NotNull / NotEmpty
>匹配(正则表达式)
> InclusiveBetween(范围)
> CreditCard
>电子邮件
> EqualTo(跨财产平等比较)
>长度
所以你想要实现的基本上不支持开箱即用.
请查看自定义客户端FluentValidation规则here的示例.