Asp.net web api 如何避免将空实体对象传递给web api方法

Asp.net web api 如何避免将空实体对象传递给web api方法,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,我有下面的web api方法,如下所示 public bool UpdateValidations([FromBody] ValidationKeyEntity validationKey) { if (ModelState.IsValid) { //my code here } } public class ValidationKeyEntity { public int ValidationKeyId { get; set; }

我有下面的web api方法,如下所示

public bool UpdateValidations([FromBody] ValidationKeyEntity validationKey)
{
    if (ModelState.IsValid)
    { 
        //my code here
    }
}

public class ValidationKeyEntity
{
    public int ValidationKeyId { get; set; }

    [MaxLength(Constants.maxStringLength)]
    public string Name { get; set; }

    public int DisplayId { get; set; }

    [MaxLength(Constants.maxStringLength)]
    public string CreatedBy { get; set; }
}
我正在使用Postman进行测试。我将不同于ValidationKeyEntity对象的json作为{“Vishal”:“Vishal”}作为参数传递。 但是我的ModelState.IsValid仍然返回true

如何避免接受“ValidationKeyEntity”对象以外的其他json对象?

  • 用于将属性标记为“必需”:

    public class ValidationKeyEntity
    {
        [Required]
        public int ValidationKeyId { get; set; }
    
        [Required]
        public string Name { get; set; }
    
        [Required]
        public int DisplayId { get; set; }
    
        [Required]
        public string CreatedBy { get; set; }
    }
    
  • 全局设置以处理废物属性:

    var httpConfiguration = new HttpConfiguration();
    
    httpConfiguration
                    .Formatters
                    .JsonFormatter
                    .SerializerSettings
                    .MissingMemberHandling = MissingMemberHandling.Error;
    

  • 检查此链接:我建议您创建自己的ModelBinder,并在方法中使用它代替[FromBody]。无论如何,您很可能要执行验证,并且您使用框架管道,这样当您进入方法时就知道您有一个“有效”对象,不管“有效”对您意味着什么。IMO ModelBinder是ASP的一个未充分使用的方面。