6

चलो बस कहना है कि मेरे पास एक व्यूमोडेल है जो 3 अन्य व्यू मॉडल्स से बना है। एक में वस्तुओं की एक सूची होती है, दूसरे में एक [आवश्यक] विशेषता वाले वर्ग का एक उदाहरण होता है और फिर अन्य वस्तुओं की एक और सूची होती है।एमवीसी 3 ModelState.IsValid एकाधिक व्यूमोडल्स

यदि उपयोगकर्ता दो सूचियों में से किसी एक आइटम में से किसी एक से चयन करता है, तो मैं नहीं चाहता कि दूसरी वस्तु पर [आवश्यक] विशेषता मॉडलस्टेट को अमान्य घोषित करे, क्योंकि यदि उपयोगकर्ता उन वस्तुओं में से एक का चयन करता है उन्हें आइटम के साथ [आवश्यक] विशेषता के साथ फ़ॉर्म भरने की आवश्यकता नहीं होगी।

मैं इस समस्या को कैसे हल कर सकता हूं?

उत्तर

5

मॉडलस्टेट का उपयोग करके "अपमानजनक" सत्यापन को हटाने का एक विकल्प आपके लिए है। Remove ("KeyName")। मैं बिल्कुल वैसा ही परिदृश्य है और निम्नलिखित को लागू किया है:

var MyModel = _someService.GetModelById(id); 
TryUpdateModel(MyModel); 
ModelState.Remove("MyModel.OffendingField"); 
if (ModelState.IsValid) 
{ 
    ... 
} 

हालांकि यह महत्वपूर्ण है कि आप यकीन है कि यह एक नॉक-पर अपने कोड के अन्य क्षेत्रों में प्रभाव नहीं होगा बनाते हैं।

+0

मुझे लगता है कि पूरे व्यूमोडेल को सत्यापित करने के बजाय, मैं सुझाव दूंगा और उपयोगकर्ताओं के चयन से प्रभावित मॉडल को सशर्त रूप से मान्य कर दूंगा। इसके अलावा, इसने मुझे एप्लिकेशन डिज़ाइन पर पुनर्विचार किया और शुक्र है कि मुझे इसे संभालने के कुछ बेहतर तरीके मिल गए हैं ताकि यह कोई समस्या न हो। – ewahner

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