在ASP.NET MVC4应用程序中,我们使用FluentValidation来验证我们的模型。在某些情况下,我们只想在另一个属性具有值时验证属性。我们使用When关键字来完成此任务。一个简单的验证类如下所示:
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(item => item.FirstName).NotEmpty();
RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName))
}
}
我们希望对此进行客户端验证。我试图创建一个自定义FluentValidationPropertyValidator。但我找不到一种方法来获取验证规则的When部分。 有人能指出我正确的方向吗?
答案 0 :(得分:0)
FluentValidation中的一些验证不支持客户端验证:
来自文档(http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation):
请注意,FluentValidation也适用于ASP.NET MVC 客户端验证,但并非所有规则都受支持。例如, 使用条件定义的任何规则(使用When / unless),自定义 验证器或对Must的调用不会在客户端运行。该 客户端支持以下验证器:
* NOTNULL / NotEmpty *匹配(正则表达式) * InclusiveBetween(范围) *信用卡 *电子邮件 * EqualTo(跨属性平等比较) *长度
答案 1 :(得分:0)
FluentValidation现在确实支持客户端验证。客户端支持以下验证器:
答案 2 :(得分:0)
Fluent验证是一个服务器端验证库。但是它支持一些基本的客户端验证,例如required,maxlength等。
如果要为Fluent Validation添加完全的客户端支持,则可以使用Form Helper。
您需要这样创建表单:
var formConfig = new FormConfig(ViewContext)
{
FormId = "ProductForm",
FormTitle = "New Product",
BeforeSubmit = "ProductFormBeforeSubmit", // optional
Callback = "ProductFormCallback" // optional,
};
// <form id="@formConfig.FormId" asp-controller="Home" asp-action="Save"
// ...
@await Html.RenderFormScript(formConfig)
此后,您需要向操作添加 [FormValidator] 属性。