我有以下視圖模型(爲方便閱讀只是顯示一些屬性)避免驗證
public class Contract{
public string Name {get; set;}
public ContractTerm PrpTerm { get; set; }
}
的PRP期限模型是這樣的
public class PrpTerm{
public int Id {get; set;}
public string Name {get; set;}
}
對於我的模型驗證我使用XML文件注入註釋。我已經根據需要設置了Name
屬性,並且我讓ContractTerm
未指定任何驗證(它是列表中的可選字段)。我的觀點是有一個名稱的文本框和合同條款的選擇列表。
當我試圖保存時,我得到ModelState.IsValid
屬性爲false,說PRPTerm.Id
值是必需的。我知道這是因爲我們不能將一個空值賦給一個int。
有人知道避免這種情況的方法嗎?
我試過使用綁定(排除註釋,但這從數據提交中刪除字段,這不允許我得到用戶選擇的值(如果發生的話)。我不能設置爲可空的PrpClass。另一種選擇是設置PrpTerm標識的視圖模型,但我需要證明有正當理由認爲變化。
任何想法?
其實,我從視圖中得到的是從列表中選擇的ID。我明白,在視圖模型上使用該術語的名稱或ID將是最佳選擇,但我找不到與「驗證不起作用」不同的參數:( – pollirrata
)不包括它的論點是一個視圖模型應該只包含你需要的屬性和子視圖模型,在這種情況下,你試圖使用一個下拉列表來綁定一個多個屬性類,這個下拉列表在設計上只允許指定一個屬性。您需要的下拉列表ID對應的ViewModel最有意義,您可以在發佈後使用此屬性獲取控制器中的PrpTerm類(或等效的域類)。 – DMulligan