PageLoad中抓取Button Click事件

遇到一种需求,User要求每点一个Button,都要记录log,这可就比较麻烦了~
想到两种解决的方式
1.在PageLoad事件中进行处理,抓到Button Click事件,进行记录log
2.客制一个Button控件,在Button的基类中进行处理

目前找到第一种事项的方法,只是感觉如果页面元素比较多,可能会比较慢,还未测试过
如果取的ImageButton,那么从Page.Request.Form中取会的buttonID则会带有ImageButtond 的坐标信息,
buttonID.X 和 buttonID.Y,所以在Page.FindControl的时候,需要将buttonID的.X或者.Y去掉,否则FindControl是找不到这个ImageButton的

    protected void PageBase_Load(object sender, EventArgs e)
    
{
        
foreach (string buttonID in this.Page.Request.Form)
        
{
            
//Page Load时抓取Request 的 Button ID
            Control pageControl = this.Page.FindControl(buttonID);
            
if (pageControl is Button)
            
{
                
//this.Page.Response.Write(pageControl.ID + "; " + pageControl.ClientID + ";<br/>");
            }

            
else if (pageControl is ImageButton)
            
{
            }

        }

    }

第二种方式理论上如下方式即可实现,只是还没有进行测试

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for LogButton
/// </summary>

public class LogButton : Button
{
    
public LogButton()
    
{
        
//
        
// TODO: Add constructor logic here
        
//
    }


    
protected override void OnClick(EventArgs e)
    
{
        
base.OnClick(e);
        
//Save Log
    }

}
原文地址:https://www.cnblogs.com/forward/p/1085131.html