5

मेरे पास एक दृश्य मॉडल है जो IValidatableObject लागू करता है और इसमें कई सत्यापन गुण भी हैं। जब मैं अपने एपीकंट्रोलर पर कोई कार्रवाई करने का प्रयास करता हूं, तो केवल विशेषता सत्यापन ही किया जाता है। क्या एएसपी.नेट वेब एपीआई IValidatableObject का समर्थन नहीं करता है? जटिल सत्यापन के लिए विकल्प क्या है जिसे एक विशेषता द्वारा प्रदर्शित नहीं किया जा सकता है?क्या एएसपी.नेट वेब एपीआई समर्थन IValidatableObject है?

संपादित करें: कहीं भी लाइन के साथ, मैंने कुछ गड़बड़ करनी होगी। सत्यापन ने रहस्यमय तरीके से उम्मीद के रूप में काम करना शुरू कर दिया। ऐसा लगता है कि IValidatableObject निश्चित रूप से डिफ़ॉल्ट रूप से समर्थित है।

उत्तर

1

अभी तक वेबपीआई पर IValidatableObject की कोशिश नहीं की गई है, लेकिन इसे दस्तावेज के अनुसार समर्थित किया जाना चाहिए डेटा एन्नोटेशन (डेटा एन्नोटेशन मॉडेल वैलिडेटेटरप्रोवाइडर) के लिए प्रमाणीकरण प्रदाता भी IValidatableObject सत्यापन प्रदान करते हैं। यहां देखें: http://msdn.microsoft.com/en-us/library/system.web.http.validation.providers(v=vs.108)

वैसे भी, आप ऑब्जेक्ट लेवल वैलिडेशन एट्रिब्यूट का भी उपयोग कर सकते हैं जिसका उपयोग आप कक्षा को सजाने के लिए कर सकते हैं ... यह IValidatableObject के रूप में इतना आसान नहीं है, लेकिन काम करना चाहिए।

0

अभी तक, IValidalidableObject समर्थित है।

4

वेब एपीआई 2.1 (माइक्रोसॉफ्ट.एस्पनेट.एबएपीआई एनयूजीटी 5.1.एक्स) के साथ, मैंने अनुभव किया कि IValidatableObject की मान्य विधि को कॉल नहीं किया जा रहा है यदि सत्यापन में से कोई भी विशेषता अमान्य है। इसलिए, आपके वर्ग की गुणों पर लागू होने वाले सभी सत्यापन गुणों को पहले उस वर्ग की वैध विधि के समक्ष वैध होने के रूप में मान्य होना चाहिए।

यदि, उदाहरण के लिए, आपके पास RequiredAttribute के साथ एक संपत्ति है और आप उस क्षेत्र में कोई मूल्य नहीं डालते हैं, तो IValidatableObject की मान्य विधि के कार्यान्वयन को नहीं कहा जाएगा। हालांकि तकनीकी रूप से एक बग नहीं है, मुझे उम्मीद है कि सत्यापन के हर बार जब मैं मान्य हूं।

+0

मुझे लगता है कि आपका मतलब वेबएपीआई 2 है? जो आमतौर पर एमवीसी 5 के साथ पैक किया जाता है। किसी भी तरह से, जो आपने अनुभव किया वह अपेक्षित व्यवहार है। मैंने इस व्यवहार को सत्यापित करने के लिए डॉटपीक का इस्तेमाल किया। कक्षाओं में से किसी एक में कहीं भी एक कथन है। सुपर अप्रिय। –

+0

आप सही हैं, मैं वेब एपीआई 2 का जिक्र कर रहा था, लेकिन मैं nuget पैकेज संस्करण का संदर्भ दे रहा था। मैंने अपने जवाब का हिस्सा स्पष्ट किया है। प्रतिक्रिया के लिए धन्यवाद। –

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