2010-07-02 6 views
47

Gibt es eine Möglichkeit für mich, den ModelState.isValid = False manuell vom Controller zu setzen?Manuelles Setzen von ModelState.isValid vom Controller

Ich habe einige Code wie dieses

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 

Aber wenn _region nichts ist, dann bekomme ich keine Bestätigungsfehler Brennen.

Ich dachte über die Implementierung eines benutzerdefinierten Validators, aber es würde erfordern, die Datenbank zweimal zu schlagen (einmal für die Validierung und einmal, um den Wert festzulegen).

Antwort

80

Sie können ModelState.IsValid nicht direkt festlegen, da es sich um eine abgeleitete Eigenschaft handelt, die einfach die Fehlersammlung der Modelle überprüft. Sie können Ihre eigene Modellfehler jedoch hinzufügen, z:

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

ModelState.IsValid wird dann false zurück.

+0

mit diesem Ansatz bekomme ich immer noch den Standardwert für die Nachricht ... –

Verwandte Themen