Вручную установите ModelState.isValid из контроллера

Есть ли способ вручную установить ModelState.isValid = False из контроллера?

У меня есть код вроде этого

    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

Но если _region ничего, тогда я не получаю никаких ошибок проверки.

Я думал о внедрении настраиваемого валидатора, но для этого потребовалось бы дважды нажать на базу данных (один раз для проверки и один раз установить значение).

Ответ 1

Вы не можете напрямую установить ModelState.IsValid, так как это производное свойство, которое просто проверяет коллекцию ошибок моделей. Однако вы можете добавить свои собственные ошибки модели, например:

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

ModelState.IsValid затем вернет false.