2010-07-02 13 views
47

Czy istnieje sposób, aby ręcznie ustawić ModelState.isValid = False ze sterownika?Ręcznie ustawić ModelState.isValid ze sterownika

Mam kod podobny do tego

Dim _region As Domain.Region = RegionService.GetRegionByNameAndParentID(user.UserRegion, user.ParentRegionID) 
    If ModelState.IsValid AndAlso Not _region Is Nothing Then 
      ''# ... 
    Else 
      Return View(user) 
    End If 

Ale jeśli _region ma nic, to nie dostajesz żadnych błędów walidacji wypalania.

Myślałem o wdrożeniu niestandardowego weryfikatora, ale wymagałoby to dwukrotnego kliknięcia w bazie danych (raz dla sprawdzania poprawności i raz dla ustawienia wartości).

Odpowiedz

80

Nie można bezpośrednio ustawić ModelState.IsValid, ponieważ jest to właściwość pochodna, która po prostu sprawdza kolekcję błędów modeli. Można jednak dodać własne błędy modelu, na przykład:

ModelState.AddModelError("Region", "Region is mandatory"); 

ModelState.IsValid powróci fałszywe.

+0

przy użyciu tej metody nadal otrzymuję domyślną wartość dla wiadomości ... –

Powiązane problemy