【发布时间】:2018-02-07 00:52:42
【问题描述】:
我正在使用 ASP.NET Core MVC 2.0 实现一个 REST API 项目,如果模型绑定失败(因为请求在语法上错误)我想返回 400 状态代码,如果模型验证返回 422 状态代码失败(因为请求在语法上是正确的,但包含不可接受的值)。
举个例子,给定一个动作
[HttpPut("{id}")]
public async Task<IActionResult> UpdateAsync(
[FromRoute] int id,
[FromBody] ThingModel model)
当路由中的 id 参数包含非数字字符或请求中未指定正文时,我想返回 400 状态码,当 ThingModel 的属性时返回 422 状态码包含无效值。
据我所知,IValueProvider 和 IModelBinder 实现都像验证器一样将它们的错误添加到请求的 ModelStateDictionary 中,并且无法在绑定和验证之间注入代码。
如何实现这样的行为?
【问题讨论】:
标签: c# asp.net-core-mvc model-binding model-validation