遇到一种需求,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)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
foreach (string buttonID in this.Page.Request.Form)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//Page Load时抓取Request 的 Button ID
Control pageControl = this.Page.FindControl(buttonID);
if (pageControl is Button)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//this.Page.Response.Write(pageControl.ID + "; " + pageControl.ClientID + ";<br/>");
}
else if (pageControl is ImageButton)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}
}
}
第二种方式理论上如下方式即可实现,只是还没有进行测试
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;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/// <summary>
/// Summary description for LogButton
/// </summary>
public
class
LogButton : Button
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public LogButton()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//
// TODO: Add constructor logic here
//
}
![](/Images/OutliningIndicators/InBlock.gif)
protected override void OnClick(EventArgs e)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
base.OnClick(e);
//Save Log
}
}