2013-01-10 20 views
1

我们正在开发基于.NET webApi的Web服务,该服务将允许客户创建和更新对象。当模型交给我们的控制器时,我们如何区分null/blank/0的字段,因为调用者希望它们设置为null/blank/0,或者为null/blank/0的字段,因为这是默认使用的字段参数绑定当调用者无意为该字段设置值时?有没有处理这个问题的标准?Web服务 - 默认值忽略或清除一个字段?

回答

1

您应该只能检查控制器上的ModelState属性。如果调用WebAPI操作并且ModelState有效,那么它应该表示所有参数都已成功从URI绑定或从请求主体反序列化。

有一个警告 - 这只适用于WebAPI的默认参数绑定。如果您注册自己的自定义参数绑定,以不同的方式绑定参数,则所有投注都将关闭。

现在就属性和参数字段而言,格式化程序决定如何处理这些参数。反序列化器在遇到缺失的成员时有两种选择。他们可以抛出,也可以用0/blank/null填充成员。如果您使用的是数据合同模型,您可以让格式化程序在属性丢失时添加模型状态错误,方法是将该属性标记为[必需]或使用[DataMember(IsRequired = true)]。