zoukankan      html  css  js  c++  java
  • Net Core 自定义模型验证记录

    参考博文:
    https://ask.csdn.net/questions/702012
    https://www.cnblogs.com/lex-wu/p/11265458.html
    https://www.cnblogs.com/cgzl/ 以及杨旭大佬的bilibili视频以及代码 自己搜

      开发的时候 前端经常抱怨我们字段的一些说明在swagger 里面也没有做的完全的说明 于是 想起来Net有一套模型验证的东西的 然后就开始去了解 System.ComponentModel.DataAnnotations

    如果只是开启这个东西  会有默认的验证提示  不喜欢于是就换

    services.AddMvc(options=> {
                    options.MaxModelValidationErrors = 30;
                })
    

      开启错误提示数量  不超过30个不会停的  可以一直捕获30个后续的不抛出 好像是这么个意思

    services.Configure<ApiBehaviorOptions>(options =>
                {
                    options.InvalidModelStateResponseFactory = (context) =>
                    {
                        //var error = context.ModelState.Select(x => x.Value.Errors?.FirstOrDefault().ErrorMessage).ToList();
                        var newError = context.ModelState.Where(x => x.Value.Errors.Count > 0)
                        .Select(x => new { Name = x.Key, Message = x.Value.Errors?.FirstOrDefault().ErrorMessage}).ToList();
                        //return new Microsoft.AspNetCore.Mvc.BadRequestObjectResult($"参数验证不通过:{string.Join("|",error)}");
                        return new UnprocessableEntityObjectResult($"参数验证不通过:{JsonConvert.SerializeObject(newError)}");
                    };
                });
    

      接下来就是这么去获取具体的提示就完事了

    [{"Name":"Age","Message":"年龄范围为1-130"},{"Name":"Txt","Message":"内容的长度为2-100"},{"Name":"phone","Message":"手机格式不对"},{"Name":"disname","Message":"描述必须大于2个字符"}]
    

      测试得到这么一个Json字符串的提示 看起来要比之前的 String.Join("|") 要直观的多

  • 相关阅读:
    无题
    生活真像小说
    草样年华
    Intentional Programming
    厌倦说话
    解释 Intentional Programming
    开始折腾iphone cdma 恢复,降级,刷机,越狱,手编,写号
    新手如何成为更好的图形设计师
    Grunt.js 初使用
    有抱负的程序员应看的10个TED演讲
  • 原文地址:https://www.cnblogs.com/litianfeng-net/p/12792287.html
Copyright © 2011-2022 走看看