zoukankan      html  css  js  c++  java
  • 经常用到的Banner服务器控件的开发

      无论是论坛,还是博客就连普通的个人网页就离不开Banner,Banner主要就是图片或Flash。以前经常用到都没有把他封装成一个服务器控件,今天有点空闲所以就把它封装了。

      封装一个控件,首先当然要知道呈现的HTML代码了,其中Banner要判断是否为Flash或是图片,如果是Flash时我们还应该加入他所特有的一些属性,这个控件继承自System.Web.UI.WebControls.WebControl类,重写RenderContent方法实现,其他的一些说明在代码中有说明,这里就不多说了。下面我们来看看代码:

      1using System;
      2using System.IO;
      3using System.Text;
      4using System.Web.UI;
      5using System.ComponentModel;
      6using System.Web.UI.WebControls;
      7
      8namespace NExplus.Controls
      9{
     10    /// <summary>
     11    /// 横幅广告控件。
     12    /// </summary>

     13    public class Banner:WebControl
     14    {
     15        /// <summary>
     16        /// 初始化<see cref="Banner"/>类。
     17        /// </summary>

     18        public Banner() { }
     19        /// <summary>
     20        /// 获取或设置图片或Flash的路径。
     21        /// </summary>

     22        [DefaultValue(""),
     23        MergableProperty(false),
     24        Description("The path of the banner!")]
     25        public string Path {
     26            get {
     27                object obj = this.ViewState["BannerPath"];
     28                if (obj != null)
     29                    return (String)obj;
     30                return null;
     31            }

     32            set {
     33                this.ViewState["BannerPath"= value;
     34            }

     35        }

     36        /// <summary>
     37        /// 获取或设置Flash的品质,如果是图片这将失效。
     38        /// </summary>

     39        [DefaultValue("high"), MergableProperty(false)]
     40        public string FlashQuality
     41        {
     42            get
     43            {
     44                object obj = this.ViewState["FlashQuality"];
     45                if (obj != null)
     46                    return Helper.IsNullOrEmpty((String)obj) ? "high" : (String)obj;
     47                return "high";
     48            }

     49            set
     50            {
     51                this.ViewState["FlashQuality"= value;
     52            }

     53        }

     54        /// <summary>
     55        /// 获取或设置是否为Flash,默认为<c>false</c>
     56        /// </summary>

     57        [DefaultValue(false),
     58         MergableProperty(false)]
     59        public bool IsFlash {
     60            get {
     61                object obj = this.ViewState["IsFlash"];
     62                if (obj != null)
     63                    return (bool)obj;
     64                return false;
     65            }

     66            set {
     67                this.ViewState["IsFlash"= value;
     68            }

     69        }

     70        /// <summary>
     71        /// 获取或设置是否为透明广告。
     72        /// </summary>

     73        [DefaultValue(false),
     74         MergableProperty(false)]
     75        public bool IsFlashTransparent
     76        {
     77            get
     78            {
     79                object obj = this.ViewState["IsFlashTransparent"];
     80                if (obj != null)
     81                    return (bool)obj;
     82                return false;
     83            }

     84            set
     85            {
     86                this.ViewState["IsFlashTransparent"= value;
     87            }

     88        }

     89        /// <summary>
     90        /// 重写并呈现控件。
     91        /// </summary>
     92        /// <param name="writer"><see cref="HtmlTextWriter"/>对象。</param>

     93        protected override void RenderContents(HtmlTextWriter writer)
     94        {
     95            if (this.IsFlash && !Helper.IsNullOrEmpty(this.Path))
     96            {
     97                writer.Write("<object  classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0\" width=\"{0}\" height=\"{1}\" id=\"movie\" align=\"\">{2}", this.Width == Unit.Empty ? 480 : this.Width, this.Height==Unit.Empty?60:this.Height, Environment.NewLine);
     98                writer.Write("<param name=\"movie\" value=\"{0}\">{1}"this.Path, Environment.NewLine);
     99                if (!Helper.IsNullOrEmpty(this.FlashQuality))
    100                    writer.Write("<param name=\"quality\" value=\"{0}\">{1}"this.FlashQuality, Environment.NewLine);
    101                if (this.IsFlashTransparent)
    102                    writer.Write("<param name=\"wmode\" value=\"transparent\">{0}", Environment.NewLine);
    103                writer.Write("<embed src=\"{0}\" quality=\"{1}\" width=\"{2}\" height=\"{3}\" name=\"movie\" align=\"\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\">{4}", this.Path,this.FlashQuality, this.Width == Unit.Empty ? 480 : this.Width, this.Height == Unit.Empty ? 60 : this.Height, Environment.NewLine);
    104                writer.Write("</object>");
    105            }

    106            else if (!Helper.IsNullOrEmpty(this.Path))
    107            {
    108                writer.Write("<img src=\"{0}\" width=\"{1}\" height=\"{2}\" alt=\"{3}\" border=\"0\"/>"this.Path, this.Width == Unit.Empty ? 480 : this.Width, this.Height == Unit.Empty ? 60 : this.Height, this.ToolTip);
    109            }

    110            base.RenderContents(writer);
    111        }

    112    }

    113}

    114
     
      也许有些属性还没封装好,希望批评指教!
  • 相关阅读:
    Luogu p2672 推销员 (贪心)
    HDU 1548 A strange lift (暴力搜索)
    HDU 1258 Sum it up (dfs)
    HDU 1087 FatMouse and Cheese (记忆化搜索)
    Beautiful Numbers(牛客)
    E. Product Oriented Recurrence(矩阵快速幂+欧拉降幂)
    Super A^B mod C FZU
    bitset入门 简单瞎搞题
    D. Dirty Deeds Done Dirt Cheap(思维)
    大家一起来数二叉树吧(DP)
  • 原文地址:https://www.cnblogs.com/xdotnet/p/aspnet_servercontrol_banner_flash_image.html
Copyright © 2011-2022 走看看