我有用户 ID 和密码字段,这两个字段都适用于 RequiredFieldValidator。就在它下面,我放置了一个 CustomValidator,当密码不匹配时,我试图从代码隐藏中进行类似的验证。
<asp:RequiredFieldValidator runat="server" ID="PWRequired"
ControlToValidate="PasswordTextbox"
Display="None"
ErrorMessage="<b>Required Field Missing</b><br />A password is required." />
<asp:CustomValidator runat="server" ID="PWMatch"
ControlToValidate="PasswordTextbox"
Display="None"
ErrorMessage="<b>Password is Invalid</b><br />Please enter a valid password." />
<AjaxControl:ValidatorCalloutExtender
runat="Server"
ID="PWValidationExtender"
TargetControlID="PWRequired"
Width="185px"
WarningIconImageUrl="/Images/warning.gif" />
<asp:TextBox ID="PasswordTextbox" runat="server" CssClass="passwordEntry" TextMode="Password"></asp:TextBox>
(希望格式正确。我从来没有让“4个空格”的东西起作用。
然后在代码隐藏中,当密码不匹配时,我正在尝试这个:
CustomValidator myValidator = (CustomValidator)this.FindControl("PWMatch");
myValidator.Text = "<b>Password is Invalid</b><br />Please enter a valid password.";
ValidatorCalloutExtender myValExtender = (ValidatorCalloutExtender)this.FindControl("PWValidationExtender");
myValExtender.ID = "PWValidationExtender";
myValExtender.TargetControlID="PWMatch";
myValExtender.WarningIconImageUrl = "/Images/warning.gif";
myValExtender.Width = new Unit(250);
我希望这是我想念的简单而愚蠢的事情。我花了一整天的时间试图弄清楚这一点。
在此先感谢您的帮助。
==================================================== ========================
谢谢自由落体。我已经尝试过了,并得到“不快乐”。所以,我是从一个不同的方向来的。
我已更改为 CompareValidator,如下所示:(再次希望标记有效)
<asp:CompareValidator runat="server" ID="PWCompareValidator"
ControlToValidate="PasswordTextbox"
Operator="Equal"
ValueToCompare="<%# GetPassword() %>"
Text="<b>Password is Invalid</b><br />Please enter a valid password."
Type="String" />
它给了我一条消息,但总是评估为“假”,因为没有调用 GetPassword 方法。如果我继续努力,我想我可以让它发挥作用,但如果你看到一个快速的解决方案,我会全力以赴。再次感谢!!