ここで何が悪いのかわかりません。これは他の誰かによって開発されたページであり、私は問題の 1 つを修正しようとしています。
シナリオ:
ASP.NET サイト。
Login.aspx<asp:login>
には 3 つの検証グループがあります。Login.aspx.cs は、"user_login" の部分クラスです。
各検証グループには、テキスト ボックスと関連する customvalidator があります。3 つのカスタム バリデーターはすべて、対応するテキスト ボックスに何かが入力されるとトリガーされますが、最初のテキスト ボックス (validationgroup = 1 にバインド) のみが、検証が失敗したときに false を返します。
2 番目と 3 番目では、customvalidator がトリガーされますが、検証の問題があり、「args.IsValid = false;」を設定した後でも、さらに実行する必要があるプロセスが続行されます。
ここで何が間違っているのかわかりません。customvalidator が false を返すようにしたいと思います。最悪の場合、検証が失敗したときにコントロールを「テキストボックス」に戻す方法はありますか?
以下は、使用されたカスタムバリデータです。
<asp:CustomValidator ID="ExistingIdValidator" runat="server" ControlToValidate="NewUserName"
ValidateEmptyText="true" ValidationGroup="NewUserForm"
OnServerValidate="NewUserNameCheck_ServerValidate">
</asp:CustomValidator>
protected void NewUserNameCheck_ServerValidate(object source, ServerValidateEventArgs args)
{
CustomValidator validator = source as CustomValidator;
if (validator != null)
{
string NewuserNameValue = this.NewUserName.Text;
Guid registeredUserId = (Guid)Membership.GetUser(NewuserNameValue).ProviderUserKey;
if (registeredUserId != null)
{
validator.IsValid = false;
this.FailureText_New.Text = "This UserID already exists. Please login as existing user";
args.IsValid = false;
}
}
}