मेरे पास RequiredFieldValidator
के साथ निम्न कोड है। EnableClientScript
संपत्ति सत्यापन नियंत्रण में "झूठी" के रूप में सेट की गई है। इसके अलावा मैंने ब्राउज़र में स्क्रिप्ट अक्षम कर दी है।पेज कैसे करता है। यह वैध काम करता है?
मैं पीछे कोड में Page.IsValid
का उपयोग नहीं कर रहा हूं। फिर भी, जब मैं टेक्स्टबॉक्स में किसी भी मूल्य के बिना सबमिट करता हूं तो मुझे error message
मिल जाएगा।
@ दाई की टिप्पणियों से, मुझे पता चला कि Page_Load
में कोई कोड है जो postback
में निष्पादित किया गया है, तो यह एक मुद्दा हो सकता है। कोई सत्यापन त्रुटियां फेंक दी जाएगी।
if (Page.IsPostBack)
{
string value = txtEmpName.Text;
txtEmpName.Text = value + "Appended";
}
प्रश्न
- क्यों सर्वर साइड सत्यापन
Page_Load
से पहले ऐसा नहीं होता है (हालांकि, बटन क्लिक हैंडलर के लिए, वहाँPage.IsValid
जाँच करने के लिए कोई जरूरत नहीं है)? - जब मैं
Page.IsValid
का उपयोग करता हूं तो यह ठीक क्यों काम करता है? - क्या आप इस आलेख का कोई संदर्भ प्रदान कर सकते हैं जो इसे समझाता है? (नहीं है कि कहते हैं - हमेशा
Page.IsValid
का उपयोग, लेकिन कुछ का कहना है कि क्या अनिवार्य परिदृश्य दिए गए हैं केवल चलाने के बाद उपयोग करने के लिएPage.IsValid
अद्यतन 1
देखें ASP.NET Validators Common Misconception
Page.IsValid
पहुँचा जा सकता हैPage.Validate()
विधि जिसेPage_Load
के बाद कहीं भी बुलाया जाता है। यदि आप अपने सभी तर्क को पेज_लोड ईवेंट हैंडलर में रखते हैं (जो अत्यधिक डिस्को है uraged!),Page.IsValid
की जांच करने से पहलेPage.Validate()
पर कॉल करें।
नोट: यह की सलाह दी है Page_Load
में सब तर्क रखने के लिए नहीं। यदि बटन क्लिक ईवेंट पर कुछ होता है, तो इसे बटन पर ईवेंट ईवेंट हैंडलर पर ले जाएं। यदि ड्रॉप-डाउन ईवेंट पर कुछ घटित होता है, तो उसे चयनित आइटम चेंज इवेंट हैंडलर ड्रॉप-डाउन पर ले जाएं।
अद्यतन 2
ऐसा लगता है, हम भी अगर हम सर्वर साइड सत्यापन के साथ एक Custom Validator
उपयोग कर रहे हैं button click
में If(Page.IsValid)
जोड़ने की जरूरत है। CustomValidator not working well देखें।
नोट: ग्राहक साइड सत्यापन प्रश्न यहाँ मौजूद है: Whether to use Page_IsValid or Page_ClientValidate() (for Client Side Events)
मार्कअप
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
alert('haiii');
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary runat="server" ID="vsumAll" DisplayMode="BulletList" CssClass="validationsummary" ValidationGroup="ButtonClick" />
<asp:TextBox ID="txtEmpName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="valEmpName" runat="server" ControlToValidate="txtEmpName"
EnableClientScript="false" ErrorMessage="RequiredFieldValidator" Text="*" Display="Dynamic"
ValidationGroup="ButtonClick"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="ButtonClick" />
</div>
</form>
</body>
</html>
कोड के पीछे
protected void Button1_Click(object sender, EventArgs e)
{
string value = txtEmpName.Text;
SubmitEmployee(value);
}
संदर्भ:
- Should I always call Page.IsValid?
- ASP.NET Validation Controls – Important Points, Tips and Tricks
- CustomValidator not working well
http://stackoverflow.com/questions/1039465/should-i-always-call-page-isvalid –
@MassimilianoPeluso यह प्रश्न समान है लेकिन एक ही समस्या को संबोधित नहीं करता है। इसे कहते हैं "Page.IsValid बुला भले ही कोई भी मान्यता नियंत्रण पृष्ठ पर हैं"। – Lijo
आप हमें अपने codebehind तर्क दिखाने की जरूरत है लेकिन मैं अपने पेज में मान्यता नियंत्रण है। कैसे आप अपने कोड लिखा है पर निर्भर करता है यह या 'जाँच करने के लिए IsValid' आवश्यक नहीं हो सकता हो सकता है। उदाहरण के लिए, अपने तर्क एक बटन क्लिक हैंडलर है कि केवल शुरू हो जाती है, तो पेज मान्य है, तो 'IsValid' जांच परदे के पीछे किया जाता है, लेकिन में है अगर आपके तर्क' 'द्वारा सुरक्षित Page_Load' में है अगर अगर (IsPostback); का सत्यापन(); अगर (IsValid) 'तो आपको वास्तव में संपत्ति की जांच करने की आवश्यकता है। – Dai