ASP.NET Unleashed:记录广告点击率

目标:在数据库中记录某个广告显示和被点击的记录

方法: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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值