1using System;
2using System.Web.UI;
3using System.Web.UI.WebControls;
4using System.ComponentModel;
5using System.Text;
6namespace FlashAdRotator
7{
8 /**//// <summary>
9 /// fpAdRotator 的摘要說明。
10 /// </summary>
11 [DefaultProperty("Text"),
12 ToolboxData("<{0}:fpAdRotator runat=server></{0}:fpAdRotator>")]
13 public class fpAdRotator : System.Web.UI.WebControls.AdRotator
14 {
15 private bool isflashad;
16 private string imgurl;
17 [Bindable(true),
18 Category("Appearance"),
19 DefaultValue("")]
20 /**//// <summary>
21 /// 將此控制項呈現給指定的輸出參數。
22 /// </summary>
23 /// <param name="output"> 要寫出到的 HTML 編寫器 </param>
24 protected override void Render(HtmlTextWriter output)
25 {
26 try
27 {
28 if(isflashad==true)
29 {
30 StringBuilder sb=new StringBuilder("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"");
31 sb.Append("codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width={0} height={1}>");
32 sb.Append("<param name=\"movie\" value={2} />");
33 sb.Append("<param name=\"quality\" value=\"high\"/>");
34 sb.Append("<embed src={3} quality=\"high\"");
35 sb.Append("pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width={4} height={5}></embed></object>");
36 StringBuilder outstr=new StringBuilder();
37 outstr.AppendFormat(sb.ToString(),this.Width,this.Height,this.imgurl,this.imgurl,this.Width,this.Height);
38 output.Write(outstr);
39 }
40 if(isflashad==false)
41 {
42 //this.Render(output);
43 base.Render (output);
44 }
45 }
46 catch
47 {
48 StringBuilder sb=new StringBuilder("<table><tr>廣告媒體不存在<td></td></tr><table>");
49 output.Write(sb);
50 }
51 }
52 protected override void OnAdCreated(AdCreatedEventArgs e)
53 {
54 if(e.ImageUrl.ToLower().IndexOf(".swf")!=-1)
55 {
56 this.isflashad=true;
57 this.imgurl=e.ImageUrl;
58 }
59 else
60 {
61 this.isflashad=false;
62 }
63 }
64 }
65}
66
vs內建的AdRotator 不支援flash顯示,而我又要用到這個功能,在網上搜羅了一陣,找到一個老外寫的vb版本的,地址為:http://www.dnzone.com/ShowDetail.asp?NewsId=901。但我的項目都是用C#做的,索性自己改成C#的,思路是按照老外的走的,很簡單的東西,這也是我第一個控制項,談不上原創,但是C#版的這個網上我還是沒有找到。呵呵。編譯環境 vs2003+window server 2003 。源碼我已經測試通過。
關於怎麼使用的問題我就不說了,希望大家多多探討!