从Controller手动设置ModelState.isValid

时间:2010-07-02 22:59:42

标签: asp.net-mvc validation

我有办法从控制器手动设置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 个答案:

答案 0 :(得分:100)

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

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

ModelState.IsValid将返回false。