环境:net core 6.0
{"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1","title": "One or more validation errors occurred.","status": 400,"traceId": "00-f9886bc314d3f33bcac578535b805c9e-03150913ab03b15c-00","errors": {"Id": ["ID不能为空"],"Name": ["请输入流程名称"],"Update_UserID": ["更新人ID"]}}
public class UpdateWorkFlow{/// <summary>/// Id/// </summary>///[Display(Name = "ID")][Required(ErrorMessage = "{0}不能为空")][StringLength(36, ErrorMessage = "{0} 长度36.")]public string Id { get; set; }/// <summary>/// 流程名称/// </summary>///[Display(Name = "流程名称")][Required(ErrorMessage = "请输入{0}")][StringLength(50, ErrorMessage = "{0} 长度1到50之间.", MinimumLength = 1)]public string Name { get; set; }/// <summary>/// 状态(默认) 0 启用,1禁用/// </summary>///[Display(Name = "状态")][Required(ErrorMessage = "请输入{0}")][Range(0, 1, ErrorMessage = "{0} 范围值0或者1")]public uint Status { get; set; } = 0;/// <summary>/// 审批流程说明/// </summary>public string? Remark { get; set; }/// <summary>/// 最后更新人ID/// </summary>///[Display(Name = "更新人ID")][Required(ErrorMessage = "{0}")][StringLength(20, ErrorMessage = "{0} 长度3到20之间.", MinimumLength = 3)]public string? Update_UserID { get; set; }}
using System.ComponentModel;
{"statusCode": 500,"info": "参数不完整或不正确","data": "ID不能为空|请输入流程名称|更新人ID"}
public class ModelValidateActionFilter : ActionFilterAttribute{public override void OnActionExecuting(ActionExecutingContext context){if (!context.ModelState.IsValid){//获取验证失败的模型字段var errors = context.ModelState.Where(e => e.Value.Errors.Count > 0).Select(e => e.Value.Errors.First().ErrorMessage).ToList();var str = string.Join("|", errors);//设置返回内容var result = new ApiResultMsg(){StatusCode = (int)ApiStatusCodeEnum.Error,Data = str,Info = ApiStatusCodeEnum.ParameterError.GetEnumText()};//返回200状态码context.Result = new JsonResult(result);//返回400状态码//context.Result = new BadRequestObjectResult(result);}}}
#region 关闭模型验证builder.Services.Configure<ApiBehaviorOptions>(opt => opt.SuppressModelStateInvalidFilter = true);builder.Services.AddControllers(opt =>{//添加过滤器opt.Filters.Add(typeof(ModelValidateActionFilter));});#endregion
