遇到一种需求,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
}
}