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

.NET中如何通过模型绑定仅返回错误响应的指定字段

解决方案:返回200状态码的精简验证错误响应

需求

希望在模型验证失败时,返回状态码200的响应,且仅保留验证失败的字段及其错误信息,移除title、status、errors这些外层包装字段。预期响应格式如下:

{
    "ID": [
        "ID is required"
    ]
}

当前问题

  • 使用ValidationProblemDetails返回200状态码时,会带上多余的外层字段;
  • 直接返回actionContext.ModelState能得到正确的字段结构,但状态码是400(Bad Request)。

解决代码

修改Startup.cs中的ApiBehaviorOptions配置,直接将ModelState包装进OkObjectResult即可:

services.Configure<ApiBehaviorOptions>(o =>
{
    o.InvalidModelStateResponseFactory = actionContext =>
    {
        // 直接返回ModelState的键值对结构,并用OkObjectResult指定200状态码
        return new OkObjectResult(actionContext.ModelState);
    };
});

说明

  • actionContext.ModelState本身的结构就是{ "字段名": ["错误信息列表"] },正好符合需要的精简格式;
  • OkObjectResult会将内容序列化为JSON,并设置响应状态码为200;
  • 模型上的[Required]验证特性无需修改,依然保持原有配置:
    [Required(ErrorMessage = "ID is required")]
    public string ID { get; set; }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:35:02