我已经在我的ASP.Net MVC 3项目中设置了FluentValidation。我有一个表单,其中有两个输入框。任何一个可以为空,但不能同时为空。
这是我的代码:
RuleFor(x => x.username)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.email) == true)
.WithMessage("Please enter either a username or email address")
这样可以正确地将错误信息直接放在我的用户名字段上方。然而,当两个字段都为空时,我更希望验证摘要显示该消息。
有没有办法实现这一点?我一直在想,如果其他两个字段为空,我可以在模型中创建一个未使用的字段,并在其中放置该错误信息。
RuleFor(x => x.unused_field)
.NotEmpty()
.When(x => string.IsNullOrEmpty(x.email) == true && string.IsNullOrEmpty(x.username) == true)
.WithMessage("Please enter either a username or email address")
但这种方法感觉很笨拙。有没有一种方法可以直接向验证摘要中添加消息?
RuleFor(x => x).Must(x => !string.IsNullOrEmpty(x.email) && !string.IsNullOrEmpty(x.username))...
。 - Ramunas