我使用Fluent Validation .NET进行验证。 是否可以从验证摘要中的“RuleFor”确定错误消息序列。
示例:
RuleFor(x=>x.A).NotEmpty().WithMessage("A is required.");
RuleFor(x=>x.B).NotEmpty().WithMessage("B is required.");
例如,如何确定消息序列以特定显示“B是必需的”。在“A是必需的”之前。
答案 0 :(得分:0)
FluentValidationModelValidationFactory
验证程序查询中没有明确的规则排序,这意味着服务器端的错误消息顺序取决于规则声明的顺序,例如:如果A
属性的规则在B
的规则之前,那么您将在ValidationResult
之前看到A
的{{1}}错误消息。但它仅适用于手动获取验证结果(创建验证器对象并调用B
方法)。
错误进入Validate
对象后 - 他们会丢失订单。这是因为ModelState
类型,它将对象存储为Dictionary,而不是List。
如果我们查看ModelStateDictionary
方法的NDoc描述,我们会看到:
返回ModelStateDictionary对象中验证消息的无序列表(ul元素)。
但是,如果启用了客户端验证 - 则会在没有服务器调用的情况下显示验证摘要元素,并且它的错误消息的顺序与html中的输入顺序相同。
<强>结论强>
在ValidationSummary
中保存错误消息顺序的唯一方法是手动&#39;使用验证器,调用验证并在部分视图或模板中手动迭代ViewResult
以创建所需的标记。但是,如果您依赖客户端验证 - 您可以在表单上重新输入输入。