2010-07-02 40 views
47

¿Hay alguna manera de configurar manualmente el ModelState.isValid = False desde el controlador?Configurar manualmente ModelState.isValid desde el controlador

que tienen algún código como este

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 

Pero si _region es nada, entonces no sale algún error de validación de la cocción.

Pensé en implementar un validador personalizado, pero requeriría golpear la base de datos dos veces (una para la validación y otra para establecer el valor).

Respuesta

80

No puede establecer ModelState.IsValid directamente, ya que es una propiedad derivada que simplemente verifica la colección de errores de los modelos. Sin embargo, puede agregar sus propios errores en el modelo, por ejemplo:

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

ModelState.IsValid volverá entonces falsa.

+0

usando este enfoque, sigo recibiendo el valor predeterminado para el mensaje ... –

Cuestiones relacionadas