【发布时间】:2019-01-12 07:44:48
【问题描述】:
我有一个 .Net Core 2.0 Web Api。我有各种具有验证属性的模型,例如:
[Required]
public short? Quantity { get; set; }
我有一个检查模型状态的 ActionFilter:
if (!context.ModelState.IsValid)
context.Result = new BadRequestObjectResult(context.ModelState);
无论我做什么,当我故意省略所需的属性时,ModelState 总是返回有效。我的控制器标记为:
[Produces("application/json")]
模型正在正确反序列化,并且我的操作方法中的模型参数标有 [FromBody]。它似乎没有运行任何验证(标准或自定义)。我查看了this 答案和one 以及其他几个答案,但我就是不知道我错过了什么。我的 API 受到 IdenityServer 4 的保护,所以不确定这是否会起作用,但此时我必须自己验证每个操作方法,这不是我想要做的。有人有建议吗?
【问题讨论】:
-
您已将您的 Quantity 定义为可空短,并将其标记为必需,因此导致冲突。将 Quantity 更改为
short数据类型,然后尝试。 -
@MohsinMehmood 感谢您的回复,但如果您查看我提供的链接并查看 Json 反序列化整数时的代码,它将反序列化为默认值 (0)。由于这是一个有效的 int 值,它将通过验证。因此,为什么我使我需要的变量可以为空。无论如何,如果我将其更改为 int 仍然验证为有效。
标签: asp.net-core-2.0 asp.net-core-webapi model-validation