2010-07-02 16 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 तो अवास्तविक लौटाते हैं।

+0

इस दृष्टिकोण का उपयोग करके मुझे अभी भी संदेश के लिए डिफ़ॉल्ट मान मिलता है ... –

संबंधित मुद्दे