我们正在开发基于.NET webApi的Web服务,允许客户创建和更新对象。当模型交给我们的控制器时,我们如何区分null / blank / 0的字段,因为调用者希望它们设置为null / blank / 0,或者字段为null / blank / 0,因为这是默认使用的当调用者无意为该字段设置值时,参数绑定?是否有处理此问题的标准?
答案 0 :(得分:1)
您应该只需检查控制器上的ModelState属性即可。如果调用WebAPI操作并且ModelState有效,那么它应该意味着所有参数都已成功绑定到URI或从请求主体反序列化。
有一点需要注意 - 这只适用于WebAPI的默认参数绑定。如果您注册自己的自定义参数绑定,以不同方式绑定参数,则所有投注都将关闭。
现在,就参数的属性和字段而言,由格式化程序决定如何处理它们。当反序列化器遇到缺少的成员时,它有两种选择。他们可以抛出,也可以用0 / blank / null填充成员。如果您正在使用数据协定模型,则可以通过将属性标记为[Required]或使用[DataMember(IsRequired = true)]来请求格式化程序在缺少属性时添加模型状态错误。