2013-01-10 25 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)]。