自定义WebControl:广告控件

花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丽屏T51G内存全面铺货|神舟宽屏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>


 

posted @ 2007-04-10 19:38  火火  阅读(729)  评论(0编辑  收藏  举报