你是要在验证失败的时候调用方法吧, 在提交的事件处理里面,if (! Page.IsValid)
{
   调用自定义的处理;
}

解决方案 »

  1.   

    不行啊.我在如下事件里面写代码: 
    private void Button1_Click(object sender, System.EventArgs e)
    {
    if  (!Page.IsValid)  
    {  
    Response.Write("f");

    }当验证控件发现错误时, 即使我按一下按钮,程序根本不会执行button_click 里面的事件啊.
      

  2.   

    你的 Response.Write 后面要加一句 Response.Flush(); 才会输出到浏览器。看来你需要好好了解 asp.net 执行的往返行程
      

  3.   

    你是要在验证失败的时候调用方法吧, 在提交的事件处理里面,if (! Page.IsValid)
    {
       调用自定义的处理;
    }
      

  4.   

    给你写个示例:test.aspx
    ---------------------------------------------------
    <%@Page Language="C#"%>
    <%@Import Namespace="System.Data"%><script runat="server">
    void Page_Load(object src,EventArgs e){
    if(!Page.IsPostBack){
    BindData();
    }
    }void BindData(){
    DataTable table=(DataTable)Cache["mytable"];
    if(table==null){
    table=new DataTable();
    DataColumn column=new DataColumn("序号",typeof(int));
    column.AutoIncrement=true;
    column.AutoIncrementSeed=1;
    column.Unique=true;
    table.Columns.Add(column);
    table.Columns.Add(new DataColumn("姓名",typeof(string)));
    table.Columns.Add(new DataColumn("住址",typeof(string)));
    table.Columns.Add(new DataColumn("分数",typeof(int)));
    DataRow row=table.NewRow();
    row["姓名"]="张三";
    row["住址"]="陕西省吴旗县";
    row["分数"]=22;
    table.Rows.Add(row);
    row=table.NewRow();
    row["姓名"]="李四";
    row["住址"]="陕西省延安市";
    row["分数"]=26;
    table.Rows.Add(row);
    table.PrimaryKey=new DataColumn[]{column};
    Cache["mytable"]=table;
    }
    dlist.DataSource=table;
    dlist.DataBind();
    }void BindDataItem(object src,DataListItemEventArgs e){
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
    TextBox box=e.Item.FindControl("txtbox") as TextBox;
    LinkButton btn=e.Item.FindControl("btn") as LinkButton;
    if(box!=null&&btn!=null){
    box.Attributes.Add("onchange",this.GetPostBackEventReference(btn));
    }
    }
    }void UpdateTable(object src,DataListCommandEventArgs e){
    DataTable table=(DataTable)Cache["mytable"];
    TextBox box=e.Item.FindControl("txtbox") as TextBox;
    if(box!=null){
    table.Rows[e.Item.ItemIndex]["分数"]=int.Parse(box.Text);
    Cache["mytable"]=table;
    BindData();
    }
    }
    </script>
    <HTML>
    <HEAD>
    <TITLE> Webdiyer制造:) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:DataList runat="server" id="dlist" OnItemDataBound="BindDataItem" onUpdateCommand="UpdateTable">
    <ItemTemplate>
    姓名:<%#DataBinder.Eval(Container.DataItem,"姓名")%>&nbsp;&nbsp;
    分数:<asp:TextBox runat="server" id="txtbox" Text='<%#DataBinder.Eval(Container.DataItem,"分数")%>'/><br/>
    <asp:LinkButton Text="Update" CommandName="Update" runat="server" id="btn" visible=false/>
    </ItemTemplate>
    </asp:DataList>
    </form>
    </BODY>
    </HTML>
      

  5.   

    这个问题还没有解决啊. 
    TO: goody9807() 好像搭不上马嘴啊
      

  6.   

    因为你启用了客户端验证,所有asp.net中的验证控件默认都是启用客户端验证的,这样如果验证没通过就无法发送回服务器端,所以你的服务器端代码根本不会被执行,如果不想启用客户端验证,可以把验证控件的EnableClientScript设为false。