views:

29

answers:

1

Is there a way for me to manually set the ModelState.isValid = False from the controller?

I have some code like this

    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

But if _region is nothing, then I don't get any Validation Errors firing.

I thought about implementing a custom validator, but it would require hitting the database twice (once for validation and once to set the value).

+1  A: 

You can't set ModelState.IsValid directly, as it's a derived property that simply checks the models error collection. You can however add your own model errors, e.g:

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

ModelState.IsValid will then return false.

richeym
ah, I knew it was there, just forgot what it was. Thanks.
rockinthesixstring