从Controller手动设置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是什么都没有,那么我不会得到任何validation错误。

我想过实现一个自定义的validation器,但它需要击中数据库两次(一次用于validation,一次设置值)。

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

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

ModelState.IsValid将返回false。