2010-07-02 30 views
47

ModelState.isValid = False denetleyiciden el ile ayarlamanın bir yolu var mı?Elle Ayarla ModelState.isValid Denetleyiciden

Bu

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 

gibi bazı kod var ama _region şey ise, o zaman ben herhangi Doğrulama Hataları ateş alamadım.

Özel bir doğrulayıcı uygulama yapmayı düşündüm, ancak veritabanına iki kez vurulmasını gerektirir (doğrulama için bir kez ve değeri ayarlamak için bir kez).

cevap

80

Doğrudan model hata koleksiyonunu denetleyen türetilmiş bir özellik olduğundan, ModelState.IsValid doğrudan ayarlayamazsınız. Bununla birlikte örneğin kendi modeli hataları ekleyebilirsiniz:

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

ModelState.IsValid

sonra yanlış dönecektir.

+0

Bu yaklaşımı kullanarak hala iletinin varsayılan değerini aldım ... –