可以Fluent验证.NET确定错误消息序列

时间:2015-05-11 09:08:24

标签: asp.net-mvc fluentvalidation

我使用Fluent Validation .NET进行验证。 是否可以从验证摘要中的“RuleFor”确定错误消息序列。

示例:

RuleFor(x=>x.A).NotEmpty().WithMessage("A is required.");
RuleFor(x=>x.B).NotEmpty().WithMessage("B is required.");

例如,如何确定消息序列以特定显示“B是必需的”。在“A是必需的”之前。

1 个答案:

答案 0 :(得分:0)

FluentValidationModelValidationFactory验证程序查询中没有明确的规则排序,这意味着服务器端的错误消息顺序取决于规则声明的顺序,例如:如果A属性的规则在B的规则之前,那么您将在ValidationResult之前看到A的{​​{1}}错误消息。但它仅适用于手动获取验证结果(创建验证器对象并调用B方法)。

错误进入Validate对象后 - 他们会丢失订单。这是因为ModelState类型,它将对象存储为Dictionary,而不是List。

如果我们查看ModelStateDictionary方法的NDoc描述,我们会看到:

  

返回ModelStateDictionary对象中验证消息的无序列表(ul元素)。

但是,如果启用了客户端验证 - 则会在没有服务器调用的情况下显示验证摘要元素,并且它的错误消息的顺序与html中的输入顺序相同。

<强>结论ValidationSummary中保存错误消息顺序的唯一方法是手动&#39;使用验证器,调用验证并在部分视图或模板中手动迭代ViewResult以创建所需的标记。但是,如果您依赖客户端验证 - 您可以在表单上重新输入输入。