C# FluentValidation验证方法引发异常
我在使用FluentValidation库时遇到一些问题 我有一个非常小的型号C# FluentValidation验证方法引发异常,c#,asp.net-mvc,validation,fluentvalidation,C#,Asp.net Mvc,Validation,Fluentvalidation,我在使用FluentValidation库时遇到一些问题 我有一个非常小的型号 ` 到目前为止还不错,问题是当程序正在执行时,它与var结果=验证器。验证(模型)它引发SystemFormatException validate方法不应该抛出异常,而应该返回一个包含布尔字段的对象,该字段指示模型是否有效以及错误列表 PS:我知道这个特殊的验证也可以使用DataAnnotation完成,但我想使用Fluentvalidation,因为它更灵活 提前感谢您的帮助。正如@RIc指出的,我的资源文件中
` 到目前为止还不错,问题是当程序正在执行时,它与<代码>var结果=验证器。验证(模型)代码>它引发SystemFormatException validate方法不应该抛出异常,而应该返回一个包含布尔字段的对象,该字段指示模型是否有效以及错误列表 PS:我知道这个特殊的验证也可以使用DataAnnotation完成,但我想使用Fluentvalidation,因为它更灵活
提前感谢您的帮助。正如@RIc指出的,我的资源文件中存在字符串格式问题 在我的validor上我有这条线
RuleFor(x => x.Name)
.Length(1, 5)
.WithLocalizedMessage(() => BaseValidationResource.LengthValidationMessage, 1, 5);
它指向资源文件并传递了2个参数。但在我的资源文件中,我需要3个参数(属性名、最小值、最大值)
然而,我使用了错误的注释。下面是资源文件的前后版本
什么是
BaseValidationResource.LengthValidationMessage
哦,我只是指向我的资源文件上的一条错误消息,因为本地化问题。你能发布它的代码吗?@RIc很抱歉回复太晚了。我甚至没有想到资源文件,但在您要求查看它之后,我去注释了显示错误消息的行,神奇地,该方法停止了爆炸。仔细检查文件后,我找到了问题的根源。非常感谢您的帮助,我已经花了一天多的时间在这上面,如果没有您的临床观察,我将永远无法找到解决方案。可能是一个字符串格式问题,在没有看到它的情况下猜测!很高兴修好了
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);
}
RuleFor(x => x.Name)
.Length(1, 5)
.WithLocalizedMessage(() => BaseValidationResource.LengthValidationMessage, 1, 5);