c# – Fluent验证自定义验证

我想在我的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的示例.

点赞