<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="width: 511px">
            <tr>
                <td style="width: 75px">
                    用户名</td>
                <td style="width: 179px">
                    <asp:TextBox ID="username" runat="server"></asp:TextBox></td>
                <td style="width: 207px">
                    <asp:CustomValidator ID="valxusername" runat="server" ErrorMessage="CustomValidator" OnServerValidate="valxusername_ServerValidate" ValidateEmptyText="True" Display="None"></asp:CustomValidator></td>
            </tr>
            <tr>
                <td style="width: 75px">
                    密码</td>
                <td style="width: 179px">
                    <asp:TextBox ID="password" runat="server" TextMode="Password"
                        Width="148px"></asp:TextBox></td>
                <td style="width: 207px">
                    <asp:CustomValidator ID="valxpassword" runat="server" Display="None" ErrorMessage="CustomValidator" OnServerValidate="valxpassword_ServerValidate" ValidateEmptyText="True"></asp:CustomValidator></td>
            </tr>
            <tr>
                <td style="width: 75px">
                    确认密码</td>
                <td style="width: 179px">
                    <asp:TextBox ID="repassword" runat="server" TextMode="Password"
                        Width="148px"></asp:TextBox></td>
                <td style="width: 207px">
                    <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="password"
                        ControlToValidate="repassword" Display="None" ErrorMessage="两次应输入相同的密码!"></asp:CompareValidator></td>
            </tr>
            <tr>
                <td colspan="3" style="height: 44px">
                    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Style="left: 160px;
                        position: relative; top: 2px" Text="Button" /></td>
            </tr>
            <tr>
                <td colspan="3" style="height: 44px">
                    <asp:Label ID="Label1" runat="server" Style="left: 78px; position: relative; top: 0px"
                        Width="176px"></asp:Label></td>
            </tr>
            <tr>
                <td colspan="3" style="height: 44px">
                    &nbsp;<asp:ValidationSummary ID="ValidationSummary1" runat="server"
                        HeaderText="错误信息如下:" ShowMessageBox="True" ShowSummary="False" />
                </td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>    以上程序包括3个用户输入控件,用户名、密码、确认密码,要求用户名不能为空(由customValidator实现验证) 密码长度3-6之间(由customValidator实现验证) 确认密码与密码相同(由CompareValidator实现验证),汇总所有错误提示信息统一由ValidationSummary显示。以下程序为后台代码:
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Title = "验证控件综合使用";
        username.Focus();
    }
    protected void valxusername_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
        if(username.Text==""){            valxusername.ErrorMessage = "用户名不能为空!";
            args.IsValid = false;
        }
    }
    protected void valxpassword_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
        if (password.Text.Length<3 || password.Text.Length>6)
        {
            valxpassword.ErrorMessage = "密码长度为3-6之间!";
            args.IsValid = false;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
            if(Page.IsValid){                 Label1.Text="验证通过";
            
            }else{                Label1.Text = "验证不通过";
            }
    }
}
现在,确认密码的错误提示信息可以由ValidationSummary显示,但是两个用户定义验证控件的错误提示信息不能在ValidationSummary中显示,如何才能显示呢?

解决方案 »

  1.   

    楼主的这种编写是大有问题的!!
    用asp.net验证控件的好处可以做到不写服务端代码滴!
    而楼主验证非空都在服务端,所以你根本没在用asp.net验证控件!!
    我给楼主一段验证非空的代码,其他楼主可参照做!!
        <form id="form1" runat="server"> 
        <div> 
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
                Display="Dynamic" ErrorMessage="不能为空!!" SetFocusOnError="True">*</asp:RequiredFieldValidator>
            <asp:Button ID="Button1" runat="server" Text="Button" /><br />
            <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
                ShowSummary="False" />
        </div> 
        </form>