【问题标题】:ModelState.Isvalid not work for default value of boolean fieldModelState.Isvalid 不适用于布尔字段的默认值
【发布时间】:2018-05-01 08:22:39
【问题描述】:

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 对象”中。

【问题讨论】:

  • 值已经在 c 中填充。奇怪的问题是,它不会给 Name 和 Name1 字段带来问题,即使没有提供但布尔字段会产生问题。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2018-02-22
    • 2011-01-17
    • 1970-01-01
    • 2019-04-21
    • 2012-10-29
    相关资源
    最近更新 更多