Tib*_*tim 1 c# validation asp.net-core asp.net-core-middleware clean-architecture
我有 ASP.NET Web API 控制器和一些操作(方法)。让我们这样说:
[HttpPost]
public async Task<ActionResult> SavePerson([FromBody]PersonDto person)
{
await _mediatr.Send(new SavePerson.Command(person));
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
PersonDto看起来像这样:
public record PersonDto([Required, MinLength(3)]string Name, int? Age);
Run Code Online (Sandbox Code Playgroud)
当我使用无效的人员数据(Name.Length < 3 等)调用 Web API 操作“SavePerson”时,ASP.NET Core 模型绑定验证会中断执行并返回 400(错误请求)。当我传递有效的人员数据时,它工作正常。
我的问题是:
默认情况下启用自动 400 错误请求响应。要禁用它,请在启动方法中使用以下代码ConfigureServices:
services.Configure<ApiBehaviorOptions>(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
Run Code Online (Sandbox Code Playgroud)
然后您可以像这样手动处理无效的模型状态:
[HttpPost]
public async Task<ActionResult> SavePerson([FromBody]PersonDto person)
{
if(!ModelState.IsValid)
return BadRequest(ModelState);// or what ever you want
await _mediatr.Send(new SavePerson.Command(person));
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5872 次 |
| 最近记录: |