环境: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