从Controller手动设置ModelState.isValid

Cha*_*ell 57 validation asp.net-mvc

有没有办法让我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
Run Code Online (Sandbox Code Playgroud)

但是如果_region什么都没有,那么我就不会触发任何验证错误.

我考虑过实现一个自定义验证器,但它需要两次点击数据库(一次用于验证,一次用于设置值).

ric*_*eym 102

您无法ModelState.IsValid直接设置,因为它是一个派生属性,只是检查模型错误集合.但是,您可以添加自己的模型错误,例如:

ModelState.AddModelError("Region", "Region is mandatory");
Run Code Online (Sandbox Code Playgroud)

ModelState.IsValid 然后将返回false.