Skip to main content
 首页 » 编程设计

asp.net-mvc之从 Controller 手动设置 ModelState.isValid

2024年02月27日43xing901022

有没有办法让我从 Controller 手动设置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 没有任何内容,那么我不会触发任何验证错误。

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

请您参考如下方法:

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

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

ModelState.IsValid 将返回 false。