我想在我的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个属性都没有显示错误。
任何人都可以帮助我吗?
答案 0 :(得分:2)
从评论看来,问题似乎是启用客户端验证,规则实际上是在回发后工作。正如FluentValidation wiki中所指定的,唯一受支持的客户端规则是
基本上不支持你想要实现的目标。
请查看自定义客户端FluentValidation规则here的示例。
答案 1 :(得分:0)
您可以在条件时添加两条规则:
RuleFor(x => x.Name)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.Company))
.WithMessage("Please fill in the company name or the customer name");
RuleFor(x => x.Company)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.Name))
.WithMessage("Please fill in the company name or the customer name");