花3小时写了个广告控件
组合了3中广告形式:1,Flash的轮显广告,如zol.com.cn笔记本频道首页广告。2,一般的flash广告。3,一般的图片广告。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AppControl
{
[ToolboxData("<{0}:Advertisement runat=server></{0}:Advertisement>")]
public class Advertisement : WebControl
{
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(AdCode);
}
#region 属性
[Browsable(false)]
[Description("广告代码")]
public string AdCode
{
get
{
StringBuilder sb = new StringBuilder();
switch (AdType)
{
case AdTypeList.Img:
sb.AppendFormat(@"<a href='{0}' target='_blank'><img src='{1}' width='{2}' height='{3}' border='0' alt='{4}' title='{5}'", Links, Pics, Width, Height, Texts, Texts);
if (CssClass != null)
{
sb.AppendFormat(@" class={0}", CssClass);
}
sb.AppendFormat(@"/></a>");
break;
case AdTypeList.Flash:
sb.AppendFormat(@"<div");
if (CssClass != null)
{
sb.AppendFormat(" class='{0}'", CssClass);
}
sb.AppendFormat(@"><object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='{0}' height='{1}'>
<param name='SRC' value='{2}' /></object></div>", Width, Height, Flash);
break;
case AdTypeList.Repeat:
sb.AppendFormat(@"<div");
if (CssClass != null)
{
sb.AppendFormat(" class='{0}'", CssClass);
}
sb.AppendFormat(@"><script type='text/javascript'><!--
var focus_width={0};
var focus_height={1};
var text_height={2};
var swf_height = focus_height+text_height;
var pics=${3}$ ;
var links=${4}$ ;
var texts=${5}$ ;
document.write('<object classid=$clsid:d27cdb6e-ae6d-11cf-96b8-444553540000$ codebase=$http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0$ width=$ '+ focus_width +'$ height=$'+ swf_height +'$>');
document.write('<param name=$allowScriptAccess$ value=$sameDomain$ ><param name=$movie$ value=$http://pic.zol.com.cn/pix.swf$ ><param name=$quality$ value=$high$ ><param name=$bgcolor$ value=$#F0F0F0$ >');
document.write('<param name=$menu$ value=$false$ ><param name=wmode value=$opaque$ >');
document.write('<param name=$FlashVars$ value=$pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'$ >');
document.write('<embed src=$http://pic.zol.com.cn/pix.swf$ wmode=$opaque$ FlashVars=$ pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'$ menu=$false$ bgcolor=$#F0F0F0$ quality=$high$ width=$'+ focus_width +'$ height=$ '+ swf_height +'$ allowScriptAccess=$sameDomain$ type=$application/x-shockwave-flash$ pluginspage=$http://www.macromedia.com/go/getflashplayer$/>');
document.write('</object>');
//-->
</script>
</div>",Width,Height,TextHeight,Pics,Links,Texts,Flash,Flash);
break;
}
string temp = sb.ToString();
temp = temp.Replace('$', '\"');
return temp;
}
}
/// <summary>
/// 广告类型
/// </summary>
[Browsable(true)]
[Category("类型")]
[DefaultValue(AdTypeList.Img)]
[Description("广告类型")]
public AdTypeList AdType
{
get
{
object obj = ViewState["AdType"];
return (obj == null) ? AdTypeList.Img : (AdTypeList)obj;
}
set
{
ViewState["AdType"] = value;
}
}
/// <summary>
/// 广告css样式
/// </summary>
[Browsable(true)]
[Category("样式")]
[Description("广告样式")]
public string CssClass
{
get
{
object obj = ViewState["CssClass"];
return (obj == null) ? null : (string)obj;
}
set
{
ViewState["CssClass"] = value;
}
}
/// <summary>
/// 广告高度,轮显广告不包括下面文字高度
/// </summary>
[Browsable(true)]
[Category("样式")]
[DefaultValue("200")]
[Description("广告高度,轮显广告不包括下面文字高度")]
public int Height
{
get
{
object obj = ViewState["Height"];
return (obj == null) ? 200 : (int)obj;
}
set
{
ViewState["Height"] = value;
}
}
/// <summary>
/// 广告宽度
/// </summary>
[Browsable(true),
Category("样式"),
DefaultValue("300"),
Description("广告宽度")]
public int Width
{
get
{
object obj = ViewState["Width"];
return (obj == null) ? 300 : (int)obj;
}
set
{
ViewState["Width"]=value;
}
}
/// <summary>
/// 轮显广告的文字高度,其他广告类型无效
/// </summary>
[Browsable(true),
Category("样式"),
DefaultValue("20"),
Description("轮显广告下的文字高度")
]
public int TextHeight
{
get
{
object obj = ViewState["TextHeight"];
return (obj == null) ? 20 : (int)obj;
}
set
{
ViewState["TextHeight"] = value;
}
}
/// <summary>
/// 图片路径,轮显广告多个图片用|分开,Flash广告无效
/// </summary>
[Browsable(true)]
[Category("数据")]
[Description("图片路径,轮显广告多个图片用|分割")]
public string Pics
{
get
{
object obj = ViewState["Pics"];
return (obj == null) ? null : (string)obj;
}
set
{
ViewState["Pics"] = value;
}
}
/// <summary>
/// 广告链接,轮显广告多个图片用|分开,Flash广告无效
/// </summary>
[Browsable(true)]
[Category("数据")]
[Description("广告链接,轮显广告多个链接用|分割")]
public string Links
{
get
{
object obj = ViewState["Links"];
return (obj == null) ? null : (string)obj;
}
set
{
ViewState["Links"]=value;
}
}
/// <summary>
/// 标题文字,轮显广告多条标题用|分开,Flash广告无效
/// </summary>
[Browsable(true)]
[Category("数据")]
[Description("标题文字,轮显广告多条标题用|分开")]
public string Texts
{
get
{
object obj = ViewState["Texts"];
return (obj == null) ? null : (string)obj;
}
set
{
ViewState["Texts"] = value;
}
}
/// <summary>
/// Flash 路径,图片广告无效
/// </summary>
[Browsable(true)]
[Category("数据")]
[Description("Flash路径")]
public string Flash
{
get
{
object obj = ViewState["Flash"];
return (obj == null) ? null : (string)obj;
}
set
{
ViewState["Flash"] = value;
}
}
#endregion
#region 枚举
/// <summary>
/// 广告类型
/// </summary>
public enum AdTypeList : byte
{
/// <summary>
/// 轮显广告
/// </summary>
Repeat,
/// <summary>
/// 图片广告
/// </summary>
Img,
/// <summary>
/// Flash广告
/// </summary>
Flash
}
#endregion
}
}
新建测试页部分代码如下:
<cc1:advertisement id="Advertisement1" runat="server" AdType="Repeat" Flash="http://pic.zol.com.cn/pix.swf" Height="200" Links="http://nb.zol.com.cn/53/538609.html|http://nb.zol.com.cn/53/538537.html|http://nb.zol.com.cn/53/536400.html|http://nb.zol.com.cn/53/536605.html|http://nb.zol.com.cn/53/538203.html|http://nb.zol.com.cn/53/536560.html" Pics="http://digital.zol.com.cn/115_module_images/747.jpg|http://digital.zol.com.cn/115_module_images/748.jpg|http://digital.zol.com.cn/115_module_images/743.jpg|http://digital.zol.com.cn/115_module_images/739.jpg|http://digital.zol.com.cn/115_module_images/744.jpg|http://digital.zol.com.cn/115_module_images/738.jpg" Text="广告控件" TextHeight="20" Texts="双核赛扬有望现身英特尔Merom-L就绪|仅元TCL丽屏T51升G内存全面铺货|神舟宽屏MB内存双核本只卖元|轻薄还护眼4999元寸七喜AW300C评测|天逸系列最强音联想酷睿独显F50促销|“实战“检验 戴尔ATG本本直面枪林弹雨" Width="300"></cc1:advertisement>
<br />
<br />
<cc1:Advertisement ID="Advertisement2" runat="server" Height="200" Links="http://www.linkedu.com.cn"
Pics="http://www.linkedu.com.cn:9991/UploadFile/button01.gif" Text="<href a='' target='_blank'><img src='' width='300' height='200' border='0' alt='' title=''/></a>"
TextHeight="20" Texts="教盟网" Width="300"></cc1:Advertisement><br />
<br />
<cc1:Advertisement ID="Advertisement3" runat="server" AdType="Flash" Flash="http://pic.zol.com.cn/200704/4intelc2dnb76090_0401.swf"
Height="200" Text="<href a='' target='_blank'><img src='' width='300' height='200' border='0' alt='' title=''/></a>"
TextHeight="20" Width="300"></cc1:Advertisement>