Asp.net web api 如何避免将空实体对象传递给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; }
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的一个未充分使用的方面。