दिलचस्प पोस्ट
अभिव्यक्ति द्वारा ईएफ आदेश बनाने के लिए स्ट्रिंग का उपयोग कैसे करें? क्लीअरकेज़ फायदे / नुकसान php बहुआयामी सरणी डुप्लिकेट निकालते हैं प्रोजेक्ट लिंक Wamp सर्वर पर काम नहीं करते हैं जहां log4j.xml को जगह दें मैं साइट स्क्रैपिंग को कैसे रोकूं? regex के अंत में कुरकुरा ब्रेस में अल्पविराम से अलग नंबर क्या होता है अगर isset $ _POST बटन कार्रवाई पर मापदंड पास करना: @ सिलेक्टर एचटीटीपीएस पर सोर्सिंग आर स्क्रिप्ट एक सरणी की चाबियाँ मुद्रित करें JQuery .live () और .on () पर क्या अंतर है SQL सर्वर के लिए LIMIT और OFFSET के समतुल्य? पायथन का प्रयोग करके ईएस में कीवर्ड को स्टोर करने के लिए थोक एपीआई का उपयोग कैसे करें सीएसएस: चयनकर्ता की प्राथमिकता / विशिष्टता को समझना

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

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

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

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

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

मुझे यकीन नहीं है कि यह समाधान 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