दिलचस्प पोस्ट
TypeError: 'अपरिभाषित' एक फ़ंक्शन नहीं है (मूल्यांकन '$ (दस्तावेज़)') कैसे PHP, jQuery और AJAX का उपयोग कर एकाधिक फ़ाइलों को अपलोड करें सही सिंगलटन पैटर्न उद्देश्य सी (आईओएस)? आंतरिक मेमोरी पर खाली स्थान प्राप्त करें फ़्लेक्सबॉक्स बटन या फ़ील्ड्स तत्वों पर काम नहीं कर रहा है प्रोग्रामिंग ओएसजीआई (विषुव) प्रारंभ करें? रूपांतरण निर्माता बनाम रूपांतरण ऑपरेटर: प्राथमिकता यूनिक्स पूल कमांड के बराबर विंडोज़ कैसे दृश्यमान स्टूडियो में सीईएफ़ फ़ाइल का निर्माण करने के लिए? बिज़्टेक 2010: एक्सएसडी को एक ही नाम के बहुत सारे तत्वों के साथ मानचित्रण करना डुप्लिकेट कीज़ के साथ नक्शा कार्यान्वयन क्यों नहीं रतुआ वस्तु वस्तु upcasting का समर्थन करता है? तीन। जेएस प्रोजेक्टर और रे ऑब्जेक्ट्स PHP का उपयोग करने के लिए सबसे अच्छा तरीका क्या है? XML प्रतिक्रियाओं को बनाने और पार्स करने की आवश्यकता है सी + + टेम्पलेट, लिंकिंग त्रुटि

एएसपी। नेट एमवीसी प्रति-फील्ड स्तर पर क्लाइंट साइड सत्यापन अक्षम करें

मैं डाटा एनोटेशन और jQuery के मान्य प्लगइन के साथ एएसपी .नेट एमवीसी 3 का उपयोग कर रहा हूं।

क्या यह एक तरीका है कि एक निश्चित क्षेत्र (या कुछ डेटा एनोटेशन) केवल सर्वर-साइड मान्य होना चाहिए?

मेरे पास एक मास्किंग प्लगइन वाला एक फ़ोन नंबर फ़ील्ड है, और नियमित अभिव्यक्ति का सत्यापनकर्ता उपयोगकर्ता के अंत पर पागल हो जाता है Regex केवल एक असफल-सुरक्षित है (अगर कोई जावास्क्रिप्ट सत्यापन को हैक करने का निर्णय करता है), तो मुझे क्लाइंट साइड पर चलाने के लिए इसकी आवश्यकता नहीं है। लेकिन मैं अभी भी क्लाइंट पक्ष को चलाने के लिए अन्य मान्यताओं को पसंद करता हूं।

वेब के समाधान से एकत्रित समाधान "एएसपी। नेट एमवीसी प्रति-फील्ड स्तर पर क्लाइंट साइड सत्यापन अक्षम करें"

मुझे यकीन नहीं है कि यह समाधान MVC3 पर काम करता है। यह निश्चित रूप से MVC4 पर काम करता है:

फ़ील्ड प्रदान किए जाने के बाद आप क्षेत्र को रेंडर करने से पहले क्लाइंट साइड सत्यापन को क्लाइंट साइड वैधीकरण के पुन: सक्षम करने से पहले अक्षम कर सकते हैं।

उदाहरण:

<div class="editor-field"> @{ Html.EnableClientValidation(false); } @Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" }) @{ Html.EnableClientValidation(true); } </div> 

यहां हम बैचआईडी फील्ड के लिए क्लाइंट साइड मान्यता को अक्षम करते हैं।

इसके अलावा मैंने इसके लिए थोड़ा सहायक विकसित किया है:

 public static class YnnovaHtmlHelper { public static ClientSideValidationDisabler BeginDisableClientSideValidation(this HtmlHelper html) { return new ClientSideValidationDisabler(html); } } public class ClientSideValidationDisabler : IDisposable { private HtmlHelper _html; public ClientSideValidationDisabler(HtmlHelper html) { _html = html; _html.EnableClientValidation(false); } public void Dispose() { _html.EnableClientValidation(true); _html = null; } } 

आप इसे का पालन के रूप में उपयोग करेंगे:

 <div class="editor-field"> @using (Html.BeginDisableClientSideValidation()) { @Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" }) } </div> 

अगर किसी के पास बेहतर समाधान है तो कृपया मुझे बताएं!

उममीद है कि इससे मदद मिलेगी।

data-val='false' विशेषता को जोड़कर आप एकल फ़ील्ड के लिए क्लाइंट-साइड विविरोधी सत्यापन बंद कर सकते हैं:

 @Html.TextBoxFor(m => m.BatchId, new { data_val = "false" }) 

यह data-val='true' विशेषता को ओवरराइड करेगा जो कि किसी भी System.ComponentModel.DataAnnotations कारण एमवीसी जोड़ता System.ComponentModel.DataAnnotations विशेषताएँ HTML तत्व अभी भी अन्य सत्यापन विशेषताओं (जैसे डाटा-वैल-आवश्यक) के साथ सजाया जाएगा, लेकिन उनके पास कोई प्रभाव नहीं होगा।

(उपरोक्त data_val में अंडरस्कोर नोट करें । MVC स्वचालित रूप से गुमनाम प्रकार गुणों में हाइफ़न को रेखांकित करता है, इसलिए HTML का प्रतिपादन करते समय data_val data-val बन जाता है)

MVC5 का उपयोग jquery.validate

http://jqueryvalidation.org/rules/

यदि आप MVC5 क्लाइंट साइड में मान्यताओं को हटाना चाहते हैं तो आपको निम्न करने की आवश्यकता है:

'मायिनपुट' पर सभी मान्यताओं को निकालें

 $("#myinput").rules("remove"); 

विशिष्ट सत्यापन

 $("#myinput").rules("remove", "min max" ); 

मान्यताओं को सूचीबद्ध करने में मदद मिल सकती है

 $("#myinput").rules(); 

इसके बाद आपको मैन्युअल रूप से अपने मॉडल को सत्यापित करने के लिए या अलग तरीके से अपने कोड को सही करने की आवश्यकता होगी क्योंकि ModelState.IsValid गलत होगा। ModelState.Clear() का प्रयोग करें और TryValidateModel फिर से आसान हो सकता है।

संपादित करें:

नियंत्रण अक्षम करने से मान्यताओं को भी हटा दिया जाता है।

 $("#myinput").attr('disabled', disabledValue); 

यह मानते हुए कि आप डिफ़ॉल्ट अबाधित सत्यापन का उपयोग करते हैं, क्लाइंट साइड पर नियमों को हटाने के लिए आप कुछ जावास्क्रिप्ट का उपयोग कर सकते हैं। प्लगइन्स / मान्यकरण / नियमों पर एक नज़र डालें

दिए गए परिदृश्य में इस लक्ष्य को हासिल करने के लिए, हमें दो बदलाव करने की आवश्यकता है।

ग्राहक की ओर

क्लाइंट साइड सत्यापन को अक्षम करने के लिए, हमें बल द्वारा इसे अक्षम करना होगा।

 @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @data_val = "false" , @class = "form-control"} }) 

सूचना @ डेटा_वल = "झूठी" यह इस फ़ील्ड पर सत्यापन को अक्षम कर देगा।

सर्वर साइड (एक्शन में)

जब मॉडल को पोस्ट एक्शन पर मान्य किया जाता है, तो मॉडलस्टेट। आईएसआईआईआईडी हमेशा झूठी बदलेगी क्योंकि पासवर्ड नहीं दिया गया है। यहां हमें मॉडल के लिए वर्तमान पासवर्ड प्रदान करना होगा और मॉडल को पुनः मान्य करना होगा।

 var userObj = db.Users_Info.Where(a => a.Id == users_Info.Id).FirstOrDefault(); if (String.IsNullOrEmpty(users_Info.Password)) { users_Info.Password = userObj.Password; } ModelState.Clear(); TryValidateModel(users_Info); 

मुझे समझाएं, पहले हम उस डाटाबेस में सहेजी गई वर्तमान जानकारी को पुनः प्राप्त करते हैं जो हम बाद में उपयोग कर रहे हैं यदि वर्तमान शब्द को निर्दिष्ट करने के लिए अगर पासवर्ड प्रदान नहीं किया गया है। पिछले दो लाइनें वास्तव में मॉडलस्टेट पर अपडेट किए गए मॉडल को वापस लाने के लिए मॉडलस्टेट को रीसेट करते हैं IISValid