(一). 概述
HyperLink默认没有Click事件, 重写了一个HyperLink自定义控件.
实现原理:
默认Hyperlink是跳到点击请求的页面, 本HyperLink自定义控件最终也是跳转到请求的页面, 但期间
执行了自己的一个方法, 我们可以在此方法中添写自己所需的功能.
本示例演示统计此超链接点击次数功能. [参考Asp.net 2.0高级编程]
(二). 代码实现
1. 自定义控件 HyperLink.cs 代码
1 /// 2 /// Author: [ ChengKing(ZhengJian) ] 3 /// Blog: Http://blog.csdn.net/ChengKing 4 /// 5 public partial class HyperLink : System.Web.UI.WebControls.HyperLink 6 { 7 public HyperLink() 8 { 9 } 10 11 /// 12 /// 返回要进行统计页面的名称[凡是点击了此控件都将经过此total.aspx页面]13 /// 14 public string TotalPage 15 { 16 get 17 { 18 return " total.aspx " ; 19 } 20 } 21 22 /// 23 /// 1. 当基类中同名方法有virtual标志时,一般用override重写,多态;24 /// 但当基类没有virtual关键字时,用new关键字修改基类方法,不具有多态功能.25 /// 2. 修改NavigateUrl, 将TotalPage始终作为目标页面;26 /// 而将用户点击的目标页面作为page参数传入27 /// 3. 这里方法名称必须是NavigateUrl, 因为当执行单击事件时,它会自动取这个属性名称的值,进行页面跳转28 /// 29 public new string NavigateUrl 30 { 31 get 32 { 33 return base .NavigateUrl; 34 } 35 set 36 { 37 string strUrl = " {0}?page={1} " ; 38 strUrl = String.Format(strUrl, TotalPage, value); 39 base .NavigateUrl = strUrl; 40 } 41 } 42 } 2. 自定义方法所在的页面 Total.aspx.cs 代码
1 /// 2 /// Author: [ ChengKing(ZhengJian) ] 3 /// Blog: Http://blog.csdn.net/ChengKing 4 /// 5 public partial class Total : System.Web.UI.Page 6 { 7 // 公共统计页面, 用来执行 点击汽车图片次数功能的方法 8 protected void Page_Load( object sender, EventArgs e) 9 { 10 this .CustomMethod(); 11 12 string strObjectPage = Request[ " page " ].ToString(); 13 Response.Redirect(strObjectPage); 14 } 15 16 /// 17 /// 这个方法可以写类似OnClick事件代码18 /// 19 private void CustomMethod() 20 { 21 // 做统计功能, 或其它功能 22 // Application["Car_Click_Count"] = (int)Application["Car_Click_Count"] + 1; 23 } 24 } Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1564501