【发布时间】:2013-01-11 07:44:02
【问题描述】:
我们正在开发基于 .NET webApi 的 Web 服务,允许客户创建和更新对象。当模型被交给我们的控制器时,我们如何区分为 null/blank/0 的字段,因为调用者希望它们设置为 null/blank/0,或者为 null/blank/0 的字段,因为这是默认使用的当调用者不打算为该字段设置值时进行参数绑定?有处理这个的标准吗?
【问题讨论】:
标签: web-services asp.net-web-api
我们正在开发基于 .NET webApi 的 Web 服务,允许客户创建和更新对象。当模型被交给我们的控制器时,我们如何区分为 null/blank/0 的字段,因为调用者希望它们设置为 null/blank/0,或者为 null/blank/0 的字段,因为这是默认使用的当调用者不打算为该字段设置值时进行参数绑定?有处理这个的标准吗?
【问题讨论】:
标签: web-services asp.net-web-api
您应该能够只检查控制器上的 ModelState 属性。如果调用了 WebAPI 操作并且 ModelState 有效,则应该意味着所有参数均已成功从 URI 绑定或从请求正文中反序列化。
有一个警告 - 这仅适用于 WebAPI 的默认参数绑定。如果您注册自己的自定义参数绑定以不同方式绑定参数,那么所有的赌注都没有。
现在就参数的属性和字段而言,由格式化程序决定如何处理它们。反序列化程序在遇到丢失的成员时有两种选择。他们可以抛出,也可以用 0/blank/null 填充成员。当属性缺失时,您可以通过将属性标记为 [Required] 或使用 [DataMember(IsRequired=true)] 来请求格式化程序添加模型状态错误(如果您正在使用数据协定模型)。
【讨论】: