我有一個ASP.NET MVC 2項目,其中我創建了一個數據傳輸對象接收來自網頁形式的數據。該表格上有兩組複選框。我想驗證對象以確保每個組中至少有一個複選框被選中。一個ASP.NET MVC驗證器,以確保至少有一個複選框被選中
我在服務器端進行驗證,以便用戶無法繞過任何客戶端驗證。 (我稍後會用jQuery添加客戶端驗證;這很容易)。
我的理解是我必須爲我的數據傳輸對象類創建自己的自定義ValidationAttribute,但我不明白如何創建和使用一個可以接受複選框屬性的任意列表,以確保其中至少有一個是真實的。我猜我會叫這樣的屬性:
[AtLeastOneCheckbox("set1check1", "set1check2", "set1check3",
ErrorMessage = "You must check at least one checkbox in set 1.")]
[AtLeastOneCheckbox("set2check1", "set2check2", "set2check3", "set2check4", "set2check5",
ErrorMessage = "You must check at least one checkbox in set 2.")]
public class MyFormDTO
{
...
}
將AtLeastOneCheckboxAttribute實行什麼樣的?
還是有不同的方式,我應該做這種驗證?
另外,我不知道爲什麼微軟MVC是把我推到這個「屬性」驗證系統的一切。如果我使用由RequiredAttribute和StringLengthAttribute完成的檢查以及我放在每個屬性上的其他驗證屬性,然後我還將IsValid()方法添加到我的對象,該對象對此對象的屬性執行其他檢查以確定它是否有效,有沒有辦法讓ModelState反映我的IsValid()方法的結果? – 2010-12-20 17:53:48