1
using System;
2
using System.Web.UI;
3
using System.Web.UI.WebControls;
4
using System.ComponentModel;
5
using System.Text;
6
namespace 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 。源码我已经测试通过。
using System;2
using System.Web.UI;3
using System.Web.UI.WebControls;4
using System.ComponentModel;5
using System.Text;6
namespace FlashAdRotator7
{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.AdRotator14
{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
try27
{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
catch47
{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
else60
{61
this.isflashad=false;62
}63
}64
}65
}66

关于怎么使用的问题我就不说了,希望大家多多探讨!


浙公网安备 33010602011771号