如何在视图上显示流畅验证(FluentValidation)的错误消息

3

以下是我流利的验证器

[Validator(typeof(testvalidator))]
public class test
{
   .....
}

 public class testvalidator: AbstractValidator<test>
 {
     public testvalidator()
     {
        Custom(testvalidationmethod);
     }
     public ValidationFailure testvalidationmethod(test t)
     {
        return ValidationFailure("","error occurred in test validation method ");

     }

 } 

使用方法

  testvalidator tv = new testvalidator();
  var result =tv.(test); 

我可以看到result.Errors中的错误信息。但是我想在视图中显示错误信息。我尝试使用Html.ValidationSummary()并设置为truefalse,但是没有起作用。需要做什么才能在视图中显示呢?我正在阅读教程。但它展示了如何在console上显示,这在实际应用中几乎不需要。我该怎么使它工作?

为了避免编码工作,我认为您可以将以下行添加到Application_Start()方法global.axcs文件中以注册FV配置:FluentValidationModelValidatorProvider.Configure(); - Thomas.Benz
1个回答

8

有一个名为AddToModelState的方法,需要调用该方法将错误添加到ModelState中。之后,错误将在视图中显示。

用法

public ActionResult DoSomething() {
  var customer = new Customer();
  var validator = new CustomerValidator();
  var results = validator.Validate(customer);

 results.AddToModelState(ModelState, null);
 return View();
}

以上内容来源于Github上的FluentValidation。请查看手动验证。


非常好的解决方案。谢谢。 我为我的模型类MyViewModel使用属性[Validator(typeof(MyViewModelValidator))],但是ModelState的验证状态无法通过验证,在POST操作中总是返回true。我不知道为什么会失败。因此,我必须使用手动验证。 - Thomas.Benz
我正在尝试学习流畅的验证。如果 (!result.IsValid) { result.AddToModelState(this.ModelState); return BadRequest(ModelState); } 我以良好的格式收到了错误信息,但我失去了对 "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "发生一个或多个验证错误。", "status": 400, "traceId": "00-1a68c87bda2ffb8de50b7d2888b32d02-94d30c7679aec10b-00" 的访问。 - redar ismail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接