ASP.NET Unleashed:記錄廣告點選率

iDotNetSpace發表於2009-11-23

目標:在資料庫中記錄某個廣告顯示和被點選的記錄

方法: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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章