10

मैं ऑर्चर्ड मॉड्यूल के भीतर काम करने वाले अविभाज्य क्लाइंट-साइड सत्यापन प्राप्त करने का प्रयास कर रहा हूं, लेकिन मैंने एक समस्या आई है।ऑर्चर्ड सीएमएस डेटाअनोटेशन - क्लाइंट-साइड सत्यापन

इस उदाहरण में मैं केवल HTML बॉक्स का उपयोग कर टेक्स्टबॉक्स फ़ील्ड पर आवश्यक एट्रिब्यूट को लागू करने का प्रयास कर रहा हूं। टेक्स्टबॉक्स फोर()।

यह के रूप में यद्यपि ऑर्चर्ड (LocalizedModelValidatorProvider) द्वारा लागू कस्टम ModelValidatorProvider मेरे लिए लग रहा है, एचटीएमएल 5 इनपुट प्रदान किए जाने से रोकता है विशेषताओं का विशेष रूप से:

data-val 
data-val-required 
मानक DataAnnotations RequiredAttribute के लिए

। काम करने के लिए jQuery.validate.unobtrusive द्वारा इन विशेषताओं की आवश्यकता है।

लोकलाइज्ड मॉडेल वैलिडेटरप्रोवाइडर स्थानीयकृतRequiredAttribute में एक आवश्यक एट्रिब्यूट मैप्स करता है, तो शायद यह ऑर्कार्ड व्यूइंजिन में एक बग (या अनुपूरक सुविधा) है जब स्थानीयकृत RequiredAttribute के साथ सजाए गए मॉडल प्रॉपर्टी के लिए टेक्स्टबॉक्स इनपुट प्रदान करते हैं?

मुझे लगता है कि किसी भी तरह इस नहीं हो रहा है:

tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata)); 

(System.Web.Mvc.Html.InputExtensions से)

मैं वर्तमान में ऑर्चर्ड 1.3.9 चल रहा हूँ।

नोट: एक hacky वैकल्पिक हल OrchardStarter मॉड्यूल में LocalizedModelValidatorProvider के पंजीकरण को हटा दें और वापस मानक MVC 3 प्रदाता के लिए डिफ़ॉल्ट है, हालांकि मैं अगर हर संभव ऑर्चर्ड स्रोत को परेशान नहीं (नहीं उत्सुक हूँ उल्लेख करने के लिए मुझे किसी बिंदु पर स्थानीय संदेश की आवश्यकता हो सकती है) ...

+0

क्या यह कभी हल हो गया था। मैं इसे प्राप्त करने में एक ही ईंट की दीवार मार रहा हूं। – Mounhim

+0

मेरे द्वारा नहीं - हालांकि यह ध्यान देने योग्य है कि यह संस्करण 1.3.9 में था जो लगभग एक वर्ष पुराना है - यह बाद के संस्करणों में तय किया गया हो सकता है। ऊपर वर्णित कार्य-आसपास अंत में मेरे लिए ठीक था इसलिए इसे आगे नहीं बढ़ाया गया - मुझे शायद एक बग उठाया जाना चाहिए था ... –

+0

क्यों नहीं आज़माएं, इसमें अंतर्निहित गतिशील फॉर्म जनरेशन कार्यक्षमता है जिसमें आपके पास अंतर्निहित सत्यापन रणनीतियों हैं परिभाषित करते हैं। https://gallery.orchardproject.net/List/Modules/Orchard.Module.oforms – bijayk

उत्तर

0

मैं MyPrettyCMS में संवाद बॉक्स में उपयोग किए जाने वाले अनौपचारिक सत्यापन की समस्या को हल करने के लिए 3 सप्ताह व्यतीत करता हूं।

मैं स्थानीयकृतRequiredAttribute का भी उपयोग करता हूं क्योंकि आप उन AutoGenerated MetaDataModels में देख सकते हैं।

मुझे ऑर्कैड नहीं पता लेकिन मुझे लगता है कि यह उपयोगकर्ता रूपों को JQuery संवाद के रूप में प्रस्तुत करता है जैसा कि मैं करता हूं।

1:

दो कठिनाइयों नहीं है आप के लिए (री) प्रपत्र आप सर्वर से डेटा भेजने के लिए प्रयोग करेंगे करने के लिए संवाद क्षेत्रों देते है।

2: यदि आप करने के लिए है (री) प्रपत्र पार्स एक काम unobstrusive सत्यापन

आप यहाँ एक पूरा JQuery Dialog based Form मिलेगा unobstrusive सत्यापन के साथ काम करने को प्राप्त करने और लाइन $ .validator.unobtrusive.parse ध्यान केंद्रित करने की (फार्म) ; यह बल AJAX जोड़े गए नियंत्रणों का विश्लेषण करने के लिए unobstrusive।

देखो $ JQuery common tool box

$.fn.jqDialogFunction = function (idDiv, titre, okFunction, openFunction) { 
    var dialogBox = $(idDiv) 
    //$(dialogBox).removeClass("notDisplayed"); 
    $(dialogBox).hide(); 
    $(dialogBox).dialog({ 
     title: titre, 
     autoOpen: false, 
     resizable: false, 
     modal: true, 
     minHeight: 450, 
     minWidth: 800, 
     open: openFunction, 
     buttons: [ 
    { 
     text: "Ok", 
     click: okFunction 
    } 
      , 
      { 
       text: "Cancel", 
       click: function() { 
        $(this).dialog("close"); 
       } 
      } 
    ] 
    }); 
    var form = dialogBox.find("form"); 
    if (form != null) { 
     $.validator.unobtrusive.parse(form); 
    } 
    $(idDiv).dialog('open'); 
} 

में .fn.jqDialogFunction फिर देखो विधि $ .fn.SaveContent -।> $ ("# DivStructurePage") माता-पिता()।appendTo (फार्म);

$.fn.SaveContent = function() { 
    $(this).dialog("close"); 
    var content = tinyMCE.activeEditor.getContent(); 
    $("#hidNewContent").val(content); 
    var v = $("#StructurePage_FK_LayoutMenu_Translation").val(); 
    var form = $("#frmManagedContent"); 
    $("#divStructurePage").parent().appendTo(form); 
    form.attr("action", "/"+ $("#hidControllerName").val() +"/Save/" + v); 
    form.submit(); 
} 
0

अपने मॉड्यूल "स्क्रिप्ट" फ़ोल्डर में अपने संपादक खाका दृश्य में यह कोड जोड़ें

@model ABC.Models.ModelName 
@{ 


Script.Require("jQuery").AtHead(); 
Script.Include("jquery.validate.min.js").AtHead(); 
Script.Include("jquery.validate.unobtrusive.min.js").AtHead(); } 

जोड़ें "jquery.validate.min.js, jquery.validate.unobtrusive.min.js"।

वेब.cofig फ़ाइल में नीचे दी गई सेटिंग जोड़ें।

<appSettings> 
<add key="ClientValidationEnabled" value="true"/> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>