目标:在数据库中记录某个广告显示和被点击的记录
方法:1.参照MSDN中:使用 AdRotator Web 服务器控件显示数据库中的广告的内容,
新建AdList表,该表是AdRotator字段映射的数据源。
2.新建AdStates表,其中AdID引用AdList主键,EntryDate记录操作时间,Type记录操作方式(0表示显示,1表示点击)
3.配置SqlDataSource,SelectCommand读取AdList表数据,
InsertCommand="Insert into AdStates(AdID,EntryDate,Type) values(@AdID,getdate(),0)” 插入一条广告已显示的记录。
4.AdRotator控件选择该数据源,AdRotator_AdCreated事件中需要执行Insert命令,
并且需要将NavigateUrl重定向到一个ashx文件.
5.ashx文件用来在广告被点击时在AdStates表中插入一条type = 1的记录,并且转到AdList表中NavigateUrl记录的地址。
AdRotator_AdCreated事件:
Code
1protected void AdRotator_AdCreated(object sender, AdCreatedEventArgs e)
2 {
3 if (e.AdProperties["ID"] != null)//如果AdList中有记录
4 {
5 //插入广告已显示的记录
6 srcAd.InsertParameters["AdID"].DefaultValue = e.AdProperties["ID"].ToString();
7 srcAd.Insert();
8
9 //重定向到该ashx文件,用来记录被点击
10 e.NavigateUrl = "~/AdRotator/AdHandler.ashx?id=" + e.AdProperties["ID"].ToString();
11 }
12 }
AdHandler.ashx代码:
Code
1public void ProcessRequest (HttpContext context) {
2
3 string strConnection = ConfigurationManager.ConnectionStrings["MyAdRotatorConnectionString"].ConnectionString;
4 SqlConnection con = new SqlConnection(strConnection);
5 string NavigateUrl = string.Empty;
6 Int32 id = Convert.ToInt32(context.Request.QueryString["id"]);
7 using (con)
8 {
9 con.Open();
10 UpdateTransferStates(id, con);
11 NavigateUrl = GetNavigateUrl(id, con);
12 }
13
14 if (!string.IsNullOrEmpty(NavigateUrl))
15 {
16 context.Response.Redirect(NavigateUrl);//转到该NavigateUrl
17 }
18
19 }
20
21 /**
22 /// 在AdStates中插入一条被点击的记录
23 ///
24 ///
25 ///
26 void UpdateTransferStates(Int32 AdID, SqlConnection con)
27 {
28 SqlCommand cmd = new SqlCommand();
29 cmd.Connection = con;
30 cmd.CommandText = "Insert into AdStates(AdID,EntryDate,Type) values(@AdID,GetDate(),1)";
31 cmd.Parameters.AddWithValue("@AdID", AdID);
32 cmd.ExecuteNonQuery();
33 }
34
35 /**
36 /// 获得该条记录的NavigateUrl
37 ///
38 /// AdList主键值
39 ///
40 /// AdList表的NavigateUrl
41 string GetNavigateUrl(Int32 ID, SqlConnection con)
42 {
43 SqlCommand cmd = new SqlCommand();
44 cmd.Connection = con;
45 cmd.CommandText = "Select NavigateUrl from AdList where ID=@ID";
46 cmd.Parameters.AddWithValue("@ID", ID);
47 return cmd.ExecuteScalar().ToString();
48 }
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-620304/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12639172/viewspace-620304/