2011-12-20 12 views
11

मैं एक दूसरे के संबंध में फॉर्म मानों को मान्य करने के लिए IValidatableObject का उपयोग करने की कोशिश कर रहा हूं। मैं एक विशिष्ट फ़ील्ड में सत्यापन प्रमाणीकरण असाइन करना चाहता हूं ताकि मैं उस फ़ील्ड के बगल में एक त्रुटि संदेश प्रदर्शित कर सकूं।विशिष्ट फ़ील्ड में सत्यापन प्रमाणीकरण असाइन करें?

उदाहरण के लिए, मैं उपयोगकर्ताओं को पासवर्ड दो बार दर्ज करना चाहता हूं, और यदि दूसरा पहले के बराबर नहीं है तो सत्यापन विफल हो गया है, फिर दूसरे के आगे त्रुटि संदेश प्रदर्शित करें।

हालांकि ऐसा लगता है कि मैं केवल मॉडल-स्तर पर त्रुटियों को असाइन कर सकता हूं; मॉडल-स्तर से मेरा मतलब है कि एक त्रुटि जो @Html.ValidationSummary(true) के साथ प्रदर्शित होगी, और यह किसी विशिष्ट मॉडल फ़ील्ड से बंधी नहीं है।

मैंने सत्यापन प्रमाणीकरण की घोषणा की जांच की है, और मुझे कोई ऐसी संपत्ति या विधि दिखाई नहीं दे रही है जो इसके लिए उपयोगी लगती है। तो - क्या कोई मुझे या तो एक वैध फ़ील्ड को एक IVIDateateableObject की मान्य विधि के भीतर से ValidationResult असाइन करने का तरीका दिखा सकता है, या पुष्टि कर सकता है कि ऐसा संभव नहीं है?

(नोट: मैं एक काम की तलाश नहीं कर रहा हूं। कृपया - उदाहरण के लिए, कोई पासवर्ड नहीं है जो पासवर्ड उदाहरण का ख्याल रखता है। मैं केवल विशेष रूप से IValidateObject की सीमाओं के बारे में जानना चाहता हूं।)

उत्तर

23

संभव है, ValidationResult में एक अधिभार है जो स्ट्रिंग के गुणों को स्वीकार करता है, गुणों को संबद्ध किया जाता है।

एक उदाहरण।

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Password != PasswordConfirmation) 
      yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    } 
+1

हाँ! मैंने अभी यह पाया था, और मेरे अपने उत्तर के रूप में पोस्ट करने वाला था – Faust

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