经常用到的Banner服务器控件的开发

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

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

  1 using  System;
  2 using  System.IO;
  3 using  System.Text;
  4 using  System.Web.UI;
  5 using  System.ComponentModel;
  6 using  System.Web.UI.WebControls;
  7
  8 namespace  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
  

  也许有些属性还没封装好,希望批评指教!


本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2006/12/13/aspnet_servercontrol_banner_flash_image.html,如需转载请自行联系原作者

相关文章
|
2月前
|
监控 前端开发 应用服务中间件
小游戏源码开发搭建技术栈和服务器配置流程
近些年不同场景游戏层出不穷,现就小游戏开发技术应用及功能详细剖析!
|
3月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
756 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
4月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
89 2
|
4月前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
5月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
135 1
|
5月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
73 3
|
5月前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
5月前
|
Kubernetes 网络安全 容器
VScode远程服务器进行开发(三)
VScode远程服务器进行开发(三)
123 0
|
6月前
|
开发框架 JavaScript 前端开发
|
7月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
98 0