You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

注册表单如何展示模型返回的多条校验错误信息?

实现方案

第一步:调整响应模型

你注释的IEnumerable<string> Errors字段正是你需要的,直接启用即可,用来存储所有校验错误的集合,调整后的模型如下:

public class UserManagerResponse
{
    public string AccessToken { get; set; }
    // 单条错误字段可保留做兼容,也可删除,后续统一用Errors返回多条错误
    public string ErrorMessage { get; set; }
    public bool IsSuccess { get; set; }
    public IEnumerable<Claim> Claims { get; set; }
    // 启用错误列表字段
    public IEnumerable<string> Errors { get; set; }
    public DateTime? ExpireDate { get; set; }
}

第二步:修改注册校验逻辑

不要遇到第一个校验错误就直接返回,先初始化一个错误列表,依次执行所有校验规则,校验不通过就把对应错误提示加入列表,所有校验完成后再判断是否有错误,统一返回:

public async Task<UserManagerResponse> RegisterUserAsync(RegisterRequest model)
{
    // 先初始化错误列表
    var errors = new List<string>();

    if (model == null)
        throw new NullReferenceException("注册请求模型为空");
    
    // 校验密码一致性
    if (model.Password != model.ConfirmPassword)
    {
        errors.Add("两次输入的密码不一致");
    }
    // 校验密码长度
    if (model.Password.Length < 5) 
    {
        errors.Add("密码长度不能少于5位");
    }
    // 后续可以继续添加其他校验规则,比如邮箱格式、用户名长度等,校验不通过就加入errors列表
    // 示例:
    // if (!model.Email.Contains("@")) { errors.Add("邮箱格式不正确"); }
    // if (model.Username.Length <5) { errors.Add("用户名长度不能少于5位"); }

    // 所有校验完成后判断是否存在错误
    if (errors.Any())
    {
        return new UserManagerResponse
        {
            IsSuccess = false,
            Errors = errors
            // 如果要兼容旧的单条错误字段,可以把所有错误用换行拼接后赋值给ErrorMessage:
            // ErrorMessage = string.Join("\n", errors)
        };
    }

    // 校验全部通过,执行后续注册业务逻辑
    // ...你的其他注册代码...
}

第三步:前端展示调整

前端拿到响应后,直接遍历Errors列表,把所有错误提示依次渲染即可实现同时展示全部校验失败的提示。

内容的提问来源于stack exchange,提问作者jacky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:15:05