Mam widok modelu &, którego używam do edycji i wstawienia strony dla rekordu. Jednym z wymagań biznesowych jest to, że pewne pole jest wymagane przy edycji, ale nie w nowym. Początkowo zanim ta konkretna funkcja została dodana do zapisie, miałem model tak:Warunkowa walidacja na modelu w MVC
[Required(ErrorMessage = "*")]
[Range(0.0, (double)decimal.MaxValue)]
[DisplayName("Cost")]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public decimal ProposedCost { get; set; }
chciałbym albo usunąć żądaną własność, czy jest to forma wkładka lub dodać go, jeśli formularz edycji. Jakie jest lepsze podejście? Cała moja inna walidacja jest wykonywana jak powyżej. Czy mogę zmienić stan modelu? Myśli?
EDIT
Coś powinienem wyjaśnić, że nadal są one dozwolone, aby dodać koszt na nowy, po prostu nie jest wymagana.
Próbowałem tego, jednak wciąż był w stanie zapisać rekord edycji bez proponowanego kosztu. Umieściłem punkt przerwania i uderzałem w Wynik Walidacji. Myśli? – Seth
Czy na pewno sprawdzasz 'ModelState.IsValid'? Zaktualizowałem odpowiedź, aby pokazać przykład. Zwróć też uwagę, że 'ProposedCost' musi być zerowany, jeśli nie pozwala na ustawienie go. – andreister
Tak, tęskniłem za tym, dobry połów. Pozostałe dodane właściwości automatycznie sprawdzają po stronie klienta. W każdym razie mogę to wykorzystać? Jest to oczywiście poza zakresem mojego pierwotnego pytania. – Seth