14

को समझना मैं कुछ समझने की कोशिश कर रहा हूं।

इस ब्लॉग पोस्ट http://bradwilson.typepad.com/blog/2010/10/mvc3-unobtrusive-validation.html

ब्रिजिंग HTML और jQuery मान्य से: jQuery मान्य के लिए सत्यापनकर्ता लेखन, और एडाप्टर जो लेता लेखन: एडेप्टर

एक क्लाइंट-साइड सत्यापनकर्ता लेखन दो चरण होते हैं HTML विशेषताओं से पैरामीटर मान और इसे jQuery में बदल देता है मेटाडेटा मान्य करें। पूर्व विषय इस ब्लॉग पोस्ट के दायरे में नहीं है (क्योंकि यह वास्तव में एमवीसी विशिष्ट नहीं है)।

jQuery.validator.unobtrusive.adapters पर एक एडाप्टर संग्रह उपलब्ध है। एडाप्टर संग्रह को लटकाना एडाप्टर पंजीकरण विधि (जोड़ें) और तीन सहायक है जिसका उपयोग बहुत ही सामान्य प्रकार के एडेप्टर (एडबूल, एडसिंगलेवल और एडमिन्मैक्स) को पंजीकृत करने के लिए किया जा सकता है।

ध्यान दें कि यह दो चरणों का कहना है।

लेकिन अगर आप इस पोस्ट पर एक नज़र डालें MVC3: make checkbox required via jQuery validate? आप केवल दूसरे चरण ("एडाप्टर लेखन") सत्यापन के लिए की जरूरत है काम करने के लिए - कोड की इस पंक्ति जोड़कर:

$.validator.unobtrusive.adapters.addBool("mandatory", "required"); 

मैं बाहर का परीक्षण किया एक नए एमवीसी 4 इंटरनेट ऐप में कोड और यह ठीक काम करता है, यहां सुपरसंपल नमूना है।

    :

    देखें मॉडल

    public class SimpleViewModel 
    { 
        [Mandatory(ErrorMessage = "You must agree to the Terms to register.")] 
        [Display(Name = "Terms Accepted")] 
        public bool IsTermsAccepted { get; set; } 
    } 
    

    मान्यता

    public class MandatoryAttribute : ValidationAttribute, IClientValidatable 
    { 
        public override bool IsValid(object value) 
        { 
         return (!(value is bool) || (bool)value); 
        } 
    
        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
        { 
         ModelClientValidationRule rule = new ModelClientValidationRule(); 
         rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()); 
         rule.ValidationType = "mandatory"; 
         yield return rule; 
        } 
    } 
    

    देखें

    @model MvcApplication2.Models.SimpleViewModel 
    
    @{ 
        ViewBag.Title = ""; 
    }  
    
    @using (Html.BeginForm()) { 
        @Html.ValidationSummary() 
        @Html.CheckBoxFor(model => model.IsTermsAccepted) 
        @Html.ValidationMessageFor(model => model.IsTermsAccepted) 
        <input type="submit" value="Send" /> 
    } 
    
    @section Scripts { 
        @Scripts.Render("~/bundles/jqueryval") 
        <script type="text/javascript"> 
         $.validator.unobtrusive.adapters.addBool("mandatory", "required"); 
        </script> 
    } 
    

    तो मूल रूप से मुझे मिल गया है तीन सवालों का श्रेय दें

  1. $ .validator.unobtrusive.adapters.addBool ("अनिवार्य", "आवश्यक") है; वास्तव में एक विशेषता वर्ग लिखने के अलावा आपको केवल एक चीज चाहिए?

  2. दृश्यों के पीछे यह वास्तव में क्या करता है?

  3. मुझे एडबूल के बारे में अच्छा दस्तावेज कहां मिल सकता है?

+1

1: केवल "पहले से मौजूद" एडेप्टर के लिए। 2: सुनिश्चित नहीं है, खुद को खोजने की उम्मीद है। 3: यदि आपको कोई मिलता है, तो कृपया मुझे बताएं! – BlueChippy

+1

http://thewayofcode.wordpress.com/2012/01/18/custom-unobtrusive-jquery- validation-with-data-annotations-in-mvc-3/ – BlueChippy

उत्तर

3

लेख @BlueChippy टिप्पणी में से जुड़ा हुआ इसके अलावा, मैं इस सवाल का जवाब 2. this article में पाया।

  1. हां यह विशेषता के अलावा एकमात्र चीज है। ऐसा इसलिए है क्योंकि हम पहले से मौजूद एक नियम का उपयोग करते हैं (आवश्यक)।
  2. यह क्या करता है?

यह सिर्फ MandatoryAttribute, जहां पहले पैरामीटर एडाप्टर नाम है और दूसरा पैरामीटर jQuery के नाम शासन को मान्य है के लिए एक नया सत्यापन एडाप्टर पंजीकृत करता है। एडाप्टर नाम को उस मान से मेल खाना चाहिए जिसे हमने सत्यापन प्रकार, के रूप में पहले निर्दिष्ट किया था और jQuery सत्यापन आवश्यक-नियम के लिए उपयोगकर्ता को चेकबॉक्स की जांच करने की आवश्यकता होगी।

3। अधिक जानकारी this article on Brad Wilson's blog में पाई जा सकती है।