【发布时间】:2016-05-05 18:10:31
【问题描述】:
我在使用 FluentValidation 库时遇到了一些问题。
我有一个非常小的模型
`
[FluentValidation.Attributes.Validator(typeof(PersonValidator))]
public class PersonModel
{
public string Name { get; set; }
public Nullable<short> Type { get; set; }
}
`
有一个验证器类
public class PersonValidator : AbstractValidator<PersonModel>
{
public PersonValidator()
{
RuleFor(x => x.Name)
.Length(1, 5)
.WithLocalizedMessage(() => BaseValidationResource.LengthValidationMessage, 1, 5);
}
}
我有一个控制器
public ActionResult Index()
{
var model = new PersonModel();
model.Name = "John Doe";
var validator = new PersonValidator();
var results = validator.Validate(model);
var error = GetModelErrors();
return View(model);
}
到目前为止一切都很好,问题是当程序执行时,它与 ; var results = validator.Validate(model); 它会抛出 SystemFormatException。
validate 方法不应该只返回一个包含指示模型是否有效的布尔字段和错误列表的对象,而不是抛出异常。
PS:我知道这个特定的验证也可以使用 DataAnnotations 来完成,但我想使用 Fluentvalidation,因为它更灵活。
提前感谢您的帮助。
【问题讨论】:
-
什么是
BaseValidationResource.LengthValidationMessage -
哦,我只是指向资源文件上的错误消息,因为本地化
-
你能把代码贴出来吗?
-
@RIc 抱歉回复晚了。我什至没有考虑资源文件,但是在您要求查看它之后,我去注释掉显示错误消息的行,然后神奇地停止了轰炸方法。仔细检查文件后,我找到了问题的根源。非常感谢您的帮助,我已经花了一天多的时间,如果没有您的临床观察,我永远不会找到解决方案。
-
可能是字符串格式问题,在没有看到的情况下猜测!很高兴它已修复
标签: c# asp.net-mvc validation fluentvalidation