2012-11-21 44 views
3

我在網絡API控制這個動作:的Web API的參數綁定

public Data GetData(ComplexModel model) 

和模型

class ComplexModel 
{ 
    Guid Guid1 { get; set;} 
    Guid Guid2 { get; set;} 
    string String1 { get; set;} 
} 

我想指定的Guid類型的定製粘合劑,如空字符串或null會綁定到空的GUID,並且不想使用可爲空的類型。試圖註冊模型綁定是這樣的:

var pb = configuration.ParameterBindingRules; 
pb.Insert(0, typeof(Guid), param => param.BindWithModelBinding(new GuidBinder())); 

,但它不叫,我得到與空字符串不能轉換爲類型GUID錯誤信息無效的模型狀態。

回答

6

記住,ParameterBindingRules檢查控制器動作參數本身(ComplexModel你的情況),不是參數的內容。您需要註冊一個針對ComplexModel的參數綁定,並使用自定義綁定進行任何處理以驗證模型實例。似乎你最好儘可能地讓Guid屬性爲空,儘管你不願意這樣做。