如何在ASP.NET MVC Fluent Validation中使用“When”方法?

时间:2013-01-18 11:02:41

标签: asp.net-mvc fluentvalidation

我正在尝试开发一个流畅的valiation规则,如果我的TitleId FK属性为null,则TitleOther文本字段将成为必填项。我已经尝试了几种流畅表达的组合和顺序,但都无济于事。

这就是我到目前为止所做的事情,如果有人可以帮我把这个When部分改正,我会非常感激,也会受到更多教育。

context.RulesFor(p => p.TitleId).Required(p => p.Message("Title is required."));
context.RulesFor(p => p.TitleOther)
        .Required(p => p.Message("Please provide your other title."))
        .Length(0, 50, c => c.Message("Other title may not exceed 50 characters")
        .When(p => context.RulesFor(p => p.TitleId). *[what here?]*

2 个答案:

答案 0 :(得分:0)

我没有多使用FluentValidation,但是根据我对docs所了解的内容,你需要做的事情

.When(p => p.TitleId == null)

而不是.When(p => context.RulesFor(p => p.TitleId). *[what here?]*

答案 1 :(得分:0)

我在When的项目中使用了Fluent Validation。我已经使用了1个比较密码的条件,如下所示:

RuleFor(u => u.Password).NotEmpty().WithMessage("Please Enter Password"); // Normal checked for non empty

When(u => !string.IsNullOrEmpty(u.Password) && !string.IsNullOrEmpty(u.ComfirmPassword), () =>
            {
                RuleFor(u => u.ComfirmPassword).Equal(x => x.Password).WithMessage("Password does not match");
            }); // For compare password

希望它对你有所帮助。

感谢。