Fluent Validation .NET 能否确定错误消息序列
Can Fluent Validation .NET determine error messages sequence
我使用 Fluent Validation .NET 进行验证。
是否可以从验证摘要中的 "RuleFor" 确定错误消息序列。
示例:
RuleFor(x=>x.A).NotEmpty().WithMessage("A is required.");
RuleFor(x=>x.B).NotEmpty().WithMessage("B is required.");
例如,如何确定消息序列以在 "A is required".
之前具体显示 "B is required."
FluentValidationModelValidationFactory
验证器查询中没有明确的规则排序,这意味着服务器端错误消息的顺序取决于规则声明的顺序,例如如果 A
属性 的规则在 B
的规则之前,那么您将在 ValidationResult
中看到 B
之前的 A
的错误消息。但它仅适用于手动获取验证结果(创建验证器对象并调用 Validate
方法)。
错误进入 ModelState
对象后 - 他们失去了秩序。那是因为 ModelStateDictionary
类型,它将对象存储为字典,而不是列表。
如果我们查看 ValidationSummary
方法的 NDoc 描述,我们会看到:
Returns an unordered list (ul element) of validation messages that are in the ModelStateDictionary object.
但是如果启用了客户端验证 - 那么验证摘要元素会在没有服务器调用的情况下出现,并且它的错误消息顺序与 html 中的输入顺序相同。
结论
在 ViewResult
中保存错误消息顺序的唯一方法是 'manually' 使用验证器,调用验证器并在部分视图或模板中手动迭代 ValidationResult
以创建您需要的标记。但是如果你依赖客户端验证——你可以重新排序表单上的输入。
我使用 Fluent Validation .NET 进行验证。 是否可以从验证摘要中的 "RuleFor" 确定错误消息序列。
示例:
RuleFor(x=>x.A).NotEmpty().WithMessage("A is required.");
RuleFor(x=>x.B).NotEmpty().WithMessage("B is required.");
例如,如何确定消息序列以在 "A is required".
之前具体显示 "B is required."FluentValidationModelValidationFactory
验证器查询中没有明确的规则排序,这意味着服务器端错误消息的顺序取决于规则声明的顺序,例如如果 A
属性 的规则在 B
的规则之前,那么您将在 ValidationResult
中看到 B
之前的 A
的错误消息。但它仅适用于手动获取验证结果(创建验证器对象并调用 Validate
方法)。
错误进入 ModelState
对象后 - 他们失去了秩序。那是因为 ModelStateDictionary
类型,它将对象存储为字典,而不是列表。
如果我们查看 ValidationSummary
方法的 NDoc 描述,我们会看到:
Returns an unordered list (ul element) of validation messages that are in the ModelStateDictionary object.
但是如果启用了客户端验证 - 那么验证摘要元素会在没有服务器调用的情况下出现,并且它的错误消息顺序与 html 中的输入顺序相同。
结论
在 ViewResult
中保存错误消息顺序的唯一方法是 'manually' 使用验证器,调用验证器并在部分视图或模板中手动迭代 ValidationResult
以创建您需要的标记。但是如果你依赖客户端验证——你可以重新排序表单上的输入。