惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Heimdal Security Blog
SecWiki News
SecWiki News
H
Hacker News: Front Page
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
AI
AI
C
Cybersecurity and Infrastructure Security Agency CISA
Scott Helme
Scott Helme
PCI Perspectives
PCI Perspectives
S
Securelist
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
Forbes - Security
Forbes - Security
T
Tor Project blog
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
I
Intezer
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
博客园 - 司徒正美
W
WeLiveSecurity
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
P
Palo Alto Networks Blog
Google DeepMind News
Google DeepMind News
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
T
Threatpost
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 程序人生-123

如何科学设计自己的网站网页 如何利用Visual Studio创建自己的模板 网页设计中的页面尺寸标准 javascript小技巧之大全集 网页META属性简介 CSS和JavaScript标签对照表 网站页面设计中的Css十大注意 网站压力测试 页面跳转 XHTML DHTML SHTML的区别 交换机路由器的组网 色彩搭配——网页设计技巧 怎样设计网页 Ping命令技巧 IE6、IE7、IE8共存方法 MOSS 对象模型的简单开发 开始→运行→命令集锦 using关键字的用法以及作用 SharePoint Designer 的利与弊
自定义服务器控件开发
程序人生-123 · 2008-03-28 · via 博客园 - 程序人生-123

1:呈现服务器控件

如果控件要呈现用户界面元素或者任何其他客户端可见的元素,则应从WebControl类派生该控件。如果控件要呈现在客户端浏览器中不可见的元素(如隐藏元素或 meta元素),则应从 Control 派生该控件。Control最重要的方法是Render方法,它允许为一个HtmlTextWriter对象提供服务器控件的内容。HtmlTextWriter类将字符和文本写入到ASP.NET服务器控件输出流。其主要的方法如下:

方法

说明

AddAttribute

对于HtmlTextWriter对象通过对RenderBeginTag方法的后续调用创建的元素,向其开始标记中添加指定的标记属性和值。

WriteStyleAttribute

向其开始标记中添加标记样式属性

WriteAttribute

将标记属性及其值写入到输出流

RenderBeginTag

将标记元素的开始标记写入输出流

RenderEndTag

将标记元素的结束标记写入输出流

WriteBeginTag

将任何制表符间距和指定标记元素的开始标记写入到输出流

WriteEndTag

写入指定的标记元素的任何制表间距和结束标记。

当用WebContent类来派生类的时候,可以使用RenderBeginTagRenderEndTag来写HTML的开始和结束标记,这时我们应该重写RenderContents方法来向服务器控件的输出流中写文本,不要使用Render方法实现,这是因为WebControlRender方法实现了一段程序,这段程序向外部提供带有样式信息的标签。

下面用一个简单的例子说明一下,创建了一个在浏览器上呈现超链接的服务器控件。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Drawing;

namespace Sunfish.Controls

{

    public class MyLinkControl : WebControl

    {

        Color color = Color.Blue;

        ///<summary>

        ///链接文本颜色

        ///</summary>

        public Color LinkColor

        {

            get { return color; }

            set { color = value; }

        }

        string hyperLink = "http://www.163.com";

        ///<summary>

        ///链接地址

        ///</summary>

        public string HyperLink

        {

            get { return hyperLink; }

            set

            {

                if (value.IndexOf("http://") == -1)

                {

                    throw new Exception("Specify Http as the protocal");

                }

                hyperLink = value;

            }

        }

        string text = "网易";

        public string Text

        {

            get { return text; }

            set { text = value; }

        }

        int fontSize = 20;

        public int FontSize

        {

            get { return fontSize; }

            set { fontSize = value; }

        }

        protected override void RenderContents(HtmlTextWriter writer)

        {          

            writer.AddAttribute(HtmlTextWriterAttribute.Href, hyperLink);

            writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, fontSize.ToString());

            writer.AddStyleAttribute(HtmlTextWriterStyle.Color, ColorTranslator.ToHtml(color));

            writer.RenderBeginTag(HtmlTextWriterTag.A);

            writer.Write(text);

            writer.RenderEndTag();

        }

    }

}

转自:http://www.cnblogs.com/sunfishlu/archive/2008/03/27/1125699.html