2010-07-02 64 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