ModelState.Isvalid不适用于布尔字段的默认值

时间:2017-11-17 14:14:46

标签: asp.net-web-api modelstate modelstatedictionary

WEB API --->

public async Task<IHttpActionResult> CreatePost(ChildClient c)
{

if(!ModelState.IsValid)  {
throw ...
}
..

}
 public class Client
    {
        [Required]
        public bool HasBaseValue { get; set; } = true;
        [Required]
        public string Name { get; set; } = "stringvalue";
    }
    public class ChildClient : Client
    {
        [Required]
        public bool HasFieldValue { get; set; } = true;
        [Required]
        public string Name1 { get; set; } = "stringvalue";
    }

ModelState.Keys给出以下错误:HasBaseValue,HasFieldValue如果未提供这两个字段。 为什么即使设置了默认值,它仍然显示在错误字段中。 注意:当我调试并通过断点检查时,默认值已经填充在'c object'中。

1 个答案:

答案 0 :(得分:0)

通过从ModelState.IsValid跳过这些字段来实现验证。由于这些默认值字段未发布,因此ModelState.IsValid视为无效。(因为,默认值从API填充但ModelState.IsValid仅验证发布的值)。