页面回送其实是先执行PAGE_LOAD再执行BUTTON_CLICK能否在PAGE_LOAD里就找到是由哪个按钮或LINKBUTTON进行了回送.

解决方案 »

  1.   

    这个问题有点意思,关注一下
    我想到的办法是为所有按钮和linkbutton注册客户端脚本块,客户端onclick时获取自身的id号放入到一个hidden控件中去,服务器端pageload时读取,不过感觉有点麻烦
      

  2.   

    有些控件如linkbutton在回传时直接从Request["__EVENTTARGET"]中便可知道源控件ID,如果是button则必须设置其属性UseSubmitBehavior="false"才可<form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" UseSubmitBehavior="false" onclick="Button1_Click" Text="Button1" />
            <asp:Button ID="Button2" runat="server" UseSubmitBehavior="false" onclick="Button2_Click" Text="Button2" />
            <asp:LinkButton ID="LinkButton1" runat="server">LinkButton</asp:LinkButton>
        </div>
        </form>
    protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["__EVENTTARGET"] != null)
            {
                Response.Write(Request["__EVENTTARGET"].ToString());
            }
        }
      

  3.   


       Response.Redirect("Temp.aspx?Button="+((Button)sender).ID);
      

  4.   

    if (Request["__EVENTTARGET"] != null)
    {
        Response.Write(Request["__EVENTTARGET"].ToString());
    }
      

  5.   

    上面的小孩们讲的都不对。
    我写了个方法用来验证是否是某某控件触发的事件bool IsEventTarget(Control control)
    {
        if (control is Button)
        {
            return !string.IsNullOrEmpty(HttpContext.Current.Request.Form[control.ClientID]);
        }
        else
        {
            return HttpContext.Current.Request.Form["__EVENTTARGET"] == control.ClientID;
        }
    }