ASP.NET 自定义验证程序不起作用

本文关键字:程序 不起作用 验证 自定义 NET ASP | 更新日期: 2023-09-27 18:31:33

我已经完成了这个页面告诉我做的所有事情,但它不起作用,我看到有人发布关于这个问题并被告知添加一个必需的字段验证器,我已经做到了,仍然不起作用。

这是客户端部分

                <asp:CustomValidator 
                    ID="CustomValidator1" 
                    runat="server" 
                    ControlToValidate="TextBoxUsername" 
                    ErrorMessage="Username already exists" 
                    OnServerValidate="CustomValidator1_ServerValidate" 
                    ValidateEmptyText="True" <!--tried without this line-->
                    ValidationGroup="form">  <!--tried without this line-->
                </asp:CustomValidator>

下面是 C# 服务器端代码

        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args){
            args.IsValid = false;
        }
看起来很简单,对吧?

它应该一直出现,对吧?好吧,它只出现在开头,然后永远消失,那是因为我在 page_load() 方法中有这一行,但我在 button_click() 方法中也有它。

Page.Validate();

ASP.NET 自定义验证程序不起作用

首先,删除验证组,并添加Text

<asp:CustomValidator 
    ID="CustomValidator1" 
    runat="server" 
    ControlToValidate="TextBoxUsername" 
    ErrorMessage="Username already exists" 
    Text="Username already exists"
    OnServerValidate="CustomValidator1_ServerValidate" 
    ValidateEmptyText="True">
</asp:CustomValidator>

ErrorMessage将显示在ValidationSummary控件中,Text应显示验证器的位置。

更新按钮以引起验证(我相信 true 无论如何都是默认值,但让我们明确一点):

然后点击后检查页面是否有效,Page.Validate不需要调用,因为它会自动用于CauseValidation的内容。

protected void Button1_Click(object sender, EventArgs e)
{ 
   if (Page.IsValid)
   {
       // Do Cool Stuff
   }
}
此外,在检查时,在

单击方法上放置断点,因为您没有任何客户端连接(例如 ClientValidationFunction="somejsfunction"在验证器上),因此只有在通过服务器端验证时,您才会点击此代码。