मुझे एक ही समस्या थी। तुलना वैलिडेटर के बजाय कस्टम वैलिडेटर का उपयोग करें। (कस्टम वैलिडेटेटर में सहायक सहायता है जिसे ValidateEmptyText कहा जाता है, जो तुलनात्मक रूप से ASP.NET 2.0 में तुलनात्मकता की कमी है।)
आपको एक उचित सर्वर वैलिडेट फ़ंक्शन, साथ ही क्लाइंट वैलिडेशन फ़ंक्शन भी प्रोग्राम करने की आवश्यकता होगी। जावास्क्रिप्ट फ़ंक्शन के लिए फ़ंक्शन हस्ताक्षर मूल रूप से सर्वर वैलिडेट फ़ंक्शन के समान होता है: स्रोत (ऑब्जेक्ट), args (ServerValidateEventArgs)।
सबसे कठिन हिस्सा यह है कि आपको "तुलनात्मक" टेक्स्टबॉक्स तक पहुंचने के लिए कस्टम कोड लिखना होगा, क्योंकि यह कस्टम वैलिडेटर का हिस्सा नहीं है। मेरे क्षेत्र फॉर्मव्यू के भीतर थे; आपको अपनी विशेष परिस्थितियों में फिट करने के लिए कोड को समायोजित करने की आवश्यकता हो सकती है। नीचे दिए गए कोड में, "एफवी" उस फॉर्म व्यू का नाम है।
क्लाइंट-साइड सत्यापन:
<script type="text/javascript">
<!--
function cvPasswordRpt_Validate(source, args)
{
args.IsValid = (args.Value ==
document.getElementsByName("fv$tbPassword").item(0).value);
}
//-->
</script>
ASPX कोड:
<label>New Password:</label>
<asp:TextBox ID="tbPassword" runat="server" CssClass="stdTextField"
TextMode="Password" ValidationGroup="edit" />
<br />
<label>Repeat New Password:</label>
<asp:TextBox ID="tbPasswordRpt" runat="server" CssClass="stdTextField"
TextMode="Password" ValidationGroup="edit" />
<asp:CustomValidator ID="cvPasswordRpt" runat="server" Display="Dynamic"
EnableClientScript="true" ValidationGroup="edit"
ControlToValidate="tbPasswordRpt" ValidateEmptyText="true"
ErrorMessage="Your passwords do not match."
ClientValidationFunction="cvPasswordRpt_Validate"
OnServerValidate="cvPasswordRpt_ServerValidate" />
सर्वर-साइड सत्यापन (VB.NET):
Protected Sub cvPasswordRpt_ServerValidate(ByVal sender As Object,
ByVal e As ServerValidateEventArgs)
Dim _newPassword As String = DirectCast(fv.FindControl("tbPassword"),
TextBox).Text
e.IsValid = e.Value.Equals(_newPassword)
End Sub
धन्यवाद, मुझे अभी एक समस्या मिली है जो मुझे नहीं पता था कि मेरे पास था! – JasonS