我正在开发一个ASP.Net MVC 5 Web应用程序,并且我使用FluentValidation(https://github.com/JeremySkinner/FluentValidation)进行验证。我在.When()条款中遇到问题,因为我无法使其正常工作。但是,我可以使用.NotEmpty()和.Length()子句之类的工作。
这是我的Viewmodel类
[Validator(typeof(ViewModelEmployerValidator))]
public class ViewModelEmployer
{
public string CurrentLineManagerEmail { get; set; }
public string NewLineManagerEmail { get; set; }
}
public class ViewModelEmployerValidator : AbstractValidator<ViewModelEmployer>
{
public ViewModelEmployerValidator()
{
RuleFor(x => x.NewLineManagerEmail).NotEmpty().When(x => x.CurrentLineManagerEmail == "").WithMessage("Please enter your new Line Manager Email");
}
}
我的剃刀视图
<div>
<div class="form-group">
@Html.TextBoxFor(model => model.CurrentLineManagerEmail, new { @class = "form-control", placeholder = "Current Line Manager Email" })
@Html.ValidationMessageFor(model => model.CurrentLineManagerEmail)
</div>
</div>
<div>
<div class="form-group">
@Html.TextBoxFor(model => model.NewLineManagerEmail, new { @class = "form-control", placeholder = "New Line Manager Email" })
@Html.ValidationMessageFor(model => model.NewLineManagerEmail)
</div>
</div>
当用户提交表单时,即使文本框CurrentLineManagerEmail保留为空,.When()验证也会选择该规则并要求用户输入新的直线经理电子邮件。
但是,如上所述,.NotEmpty()和.Length()之类的东西或者它们自己的工作正常。只有当我添加.When()子句时,验证才会失败。
有人可以帮忙吗?
感谢。
答案 0 :(得分:2)
FluentValidation对客户端验证的支持有限:
请注意,FluentValidation也适用于ASP.NET MVC的客户端验证,但并非所有规则都受支持。例如,使用条件(使用When / unless),自定义验证程序或对Must的调用定义的任何规则都不会在客户端运行。客户端支持以下验证器:
- NOTNULL / NotEmpty
- 匹配(正则表达式)
- InclusiveBetween(range)
- 信用卡式
- 电子邮件
- EqualTo(跨财产平等比较)
- 长度
(来自https://fluentvalidation.codeplex.com/wikipage?title=mvc)