ユーザー 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スペース」が機能することはありません。
コードビハインドでは、PW が一致しない場合、次のことを試しています。
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 メソッドが呼び出されていないため、常に "false" と評価されます。これを叩き続ければ、うまくいくと思いますが、手っ取り早い解決策が見つかれば、私は完全に耳を傾けます。再度、感謝します!!