2010-07-02 121 views
47

有没有办法让我从控制器手动设置ModelState.isValid = False从控制器手动设置ModelState.isValid

我有这样

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是什么,然后我没有得到任何验证错误射击。

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

回答

80

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

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

ModelState.IsValid将返回false。

+0

使用这种方法我仍然得到消息的默认值... – 2015-12-22 15:04:26