Reputation: 47417
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).
Upvotes: 71
Views: 50209
Reputation: 41
It is true that you cannot set the Modelstate directly, but sometimes it is useful to clear it and that is very well possible:
ModelState.Clear();
Will reset the ModelState.
Upvotes: 3
Reputation: 4079
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.
Upvotes: 126