Mam projekt ASP.NET MVC 2, w którym utworzyłem obiekt przesyłania danych w celu odbioru danych z formularza strony WWW. Formularz zawiera dwie grupy pól wyboru. Chcę zweryfikować obiekt, aby upewnić się, że zaznaczono co najmniej jedno z pól wyboru w każdej grupie.Walidator MVC środowiska ASP.NET, aby upewnić się, że przynajmniej jedno pole wyboru jest zaznaczone
Wykonuję sprawdzanie poprawności po stronie serwera, aby użytkownik nie mógł hackować po stronie sprawdzania poprawności po stronie klienta. (W późniejszym czasie dodam walidację po stronie klienta z jQuery, to proste.)
Rozumiem, że muszę utworzyć własną niestandardową ValidationAttribute dla mojej klasy obiektów transferu danych, ale nie rozumiem, jak tworzyć i używać taki, który może zaakceptować dowolną listę właściwości pola wyboru, aby upewnić się, że co najmniej jedna z nich jest prawdziwa. Domyślam będę musiał zadzwonić atrybuty tak:
[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
{
...
}
Co będzie realizacja AtLeastOneCheckboxAttribute wyglądać?
Czy istnieje inny sposób, w jaki powinienem przeprowadzić tego typu sprawdzanie poprawności?
Ponadto, zastanawiam się, dlaczego Microsoft MVC pcha mnie do tego „atrybut” system walidacji dla wszystkiego. Jeśli używam sprawdzeń wykonanych przez atrybuty RequiredAttribute i StringLengthAttribute oraz inne atrybuty sprawdzania poprawności, umieszczam je na każdej właściwości, a następnie dodam do mojego obiektu metodę IsValid(), która wykonuje inne sprawdzenia właściwości tego obiektu, aby zdecydować, czy jest ona ważna, czy istnieje sposób, aby parametr ModelState odzwierciedlał wynik mojej metody IsValid()? –