Fluent Validation - 根据查询结果显示多条错误信息

问题描述

我正在尝试为多个字符串属性编写验证规则,以检查它们是否唯一。 所以我做了验证器来检查它。 _service 方法返回错误代码列表,与不唯一的属性相对应。 现在如何根据返回的结果码获得或多个的响应消息?

RuleFor(x => x.User)
    .MustAsync(async (q,context,token) =>
    {
        var errors = await _service.CheckUserNameEmailExistsAsync(q.User.UserName,q.User.Email,token);
         return !errors.Any();
     }).WithMessage(...);

解决方法

你可以这样: 创建您类型的局部变量,并将结果放在那里。并在“WithMessage”中引用它并显示您需要的消息。

示例:

            SomeType errors;

            RuleFor(x => x.User)
                .MustAsync(async (q,context,token) =>
                {
                    errors = await _service.CheckUserNameEmailExistsAsync(q.User.UserName,q.User.Email,token);
                    return !errors.Any();
                }).WithMessage((_) => 
                {
                    if (errors....)
                        return "some message";
                    else if (errors...)
                        return "other some message";
                    else
                        return "another some message";
                });

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...