Asp.net mvc Fluent Validation.NET能否确定错误消息序列
我使用Fluent Validation.NET进行验证。 是否可以从验证摘要中的“RuleFor”确定错误消息序列 例如:Asp.net mvc Fluent Validation.NET能否确定错误消息序列,asp.net-mvc,fluentvalidation,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是必需的”之前。在FluentValidationModelValidat
RuleFor(x=>x.A).NotEmpty().WithMessage("A is required.");
RuleFor(x=>x.B).NotEmpty().WithMessage("B is required.");
例如,如何确定消息顺序以具体显示“B是必需的”。在“A是必需的”之前。在
FluentValidationModelValidationFactory
验证程序查询中没有明确的规则顺序,这意味着服务器端错误消息的顺序取决于规则声明的顺序,例如,如果A
属性的规则位于B
的规则之前,则您将在ValidationResult
中看到A
在B
之前的错误消息。但它仅适用于手动获取验证结果(创建validator对象并调用Validate
方法)
错误进入ModelState
对象后,它们将失去顺序。这是因为ModelStateDictionary
type将对象存储为Dictionary,而不是List
如果我们查看ValidationSummary
方法的NDoc描述,我们会看到:
返回ModelStateDictionary对象中验证消息的无序列表(ul元素)
但是,如果启用了客户端验证,则验证摘要元素将在不调用服务器的情况下显示,并且其错误消息的顺序与html中输入的顺序相同
结论
在
ViewResult
中保存错误消息顺序的唯一方法是“手动”使用validator,调用validate并在部分视图或模板中手动迭代ValidationResult
,以创建所需的标记。但是,如果您依赖客户端验证,您可以在表单上重新排序输入。您可以详细描述您希望看到的行为吗?相同的消息用于不同的规则,或者消息用于B,这取决于一个值,或者其他什么?我添加了一些关于这个问题的详细信息。我只想对摘要验证消息上显示的消息进行排序。