ASP.NET自定义服务器控件
本文通过创建一个最简单的服务器控件,演示开发服务器端控件的流程。
文章内容整理自MSDN的编程指南,原文地址在文章末尾的资源中。
本文创建一个简单的服务器控件,名为 RedLabel。 它的使用方式为:
 1<f:redlabel text="this is a test !"runat="server"></f:redlabel>
这个标签会将自己的Text属性值以红色的样式输出到页面上。运行结果如图所示:
步骤
新建一个空白解决方案,在此解决方案下新建一个类库项目,名称为MyControl。在类库中新建一个服务器端控件,名称为RedLabel。如图所示:
打开RedLabel类,将整个类的代码修改为:
 12345678910111213141516171819202122using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace MyControl{[DefaultProperty("Text")][ToolboxData("<{0}:RedLabel runat=server><!--{0}:RedLabel-->")]publicclassRedLabel : Label{//重写RenderContent函数,输出控件内容protectedoverridevoidRenderContents(HtmlTextWriter output){//将自己的Text属性(继承自Label类)值使用红色样式输出output.Write("<div style="color:red">"+ Text +"</div>");}}}至此自定义label控件编写完毕。
配置程序集属性
1. 打开类库项目下的程序集属性文件:AssemblyInfo.cs,如图所示:
1. 在文件开头添加下面代码:
 1<strong>using System.Web.UI;</strong>
2. 在文件末尾添加下面的代码:
 1<strong> [assembly: TagPrefix("MyControl","f")]</strong>
其中MyControl是命名空间的名称。f是自定义控件的标签前缀。
代码说明
如果控件要呈现在客户端浏览器中不可见的元素(如隐藏元素或 meta 元素),则应从 System.Web.UI.Control 派生该控件。 WebControl 类从 Control 派生,并添加了与样式相关的属性,如 Font、ForeColor 和 BackColor。 另外,自定义控件通过重写 RenderContents 方法将文本写入响应流中。
在页面中使用自定义控件
要在页面中使用自定义控件,需要事先进行注册,注册的目的是将控件的前缀和命名空间进行映射,这样就能通过标签名找到标签对应的实现类。注册的方式有两种
1.在页面中使用@ Register指令,如以下示例所示:
 1<%@ RegisterAssembly="ServerControl"TagPrefix="aspSample” Namespace="ServerControl"%>
2.在 Web.config文件中指定标记前缀/命名空间映射。 如果将在 Web应用程序的多个页中使用自定义控件,则该方法非常有用。 下面的示例显示了一个 Web.config文件,该文件指定了程序集MyControl中命名空间MyControl和标签前缀f的映射。
| 
 1 
 | 
 | 
 1234567891011<!--?xml version="1.0"?--><configuration><system.web><pages><controls></add></controls></pages></system.web></configuration>
测试控件
在解决方案下新建web项目,在web项目中新建apsx页面,在页面中引入自定义控件(注意,控件前缀需要注册)。比如以下页面:
 1234567891011121314151617<%@ Page Language="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="MyControl.Web._Default"%><%@ Register Assembly="MyControl"TagPrefix="f"Namespace="MyControl"%>htmlPUBLIC"-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http: www.w3.org="" 1999="" xhtml"=""><headrunat="server"><metahttp-equiv="content-type"content="text html;="" charset="utf-8"/"><title></title><formid="form1"runat="server"><div><f:redlabeltext="this is="" a="" test="" !"runat="server"></f:redlabeltext="this></div></formid="form1"runat="server"></metahttp-equiv="content-type"content="text></headrunat="server"></htmlxmlns="http:>
运行效果

资源:
MSDN创建服务器控件:http://msdn.microsoft.com/zh-cn/library/yhzc935f(v=vs.100).aspx
ASP.NET自定义服务器控件的更多相关文章
- ASP.NET 自定义服务器控件
		
文章内容 本文通过创建一个最简单的服务器控件,演示开发服务器端控件的流程. 文章内容整理自MSDN的编程指南,原文地址在文章末尾的资源中. 本文创建一个简单的服务器控件,名为 RedLabel. ...
 - (九)ASP.NET自定义用户控件(2)
		
http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...
 - ASP开发中服务器控件和普通控件的区别
		
1.对于服务器按钮控件(即<asp:Button>类型的按钮):服务器响应事件:OnClick客户端响应属性:OnClientClick 2.对于html按钮控件(即<input t ...
 - 【转】ASP.NET中服务器控件Table动态生成表格及其属性介绍
		
下文所有内容转自开源中国:http://www.oschina.net/question/565065_86453#tags_nav ================================= ...
 - ASP.NET自定义错误页面
		
ASP.NET自定义错误页面 ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件.Application_Error 事件以及应用程序配置文件 (Web.co ...
 - 连表查询都用Left Join吧  以Windows服务方式运行.NET Core程序  HTTP和HTTPS的区别  ASP.NET SignalR介绍  asp.net—WebApi跨域  asp.net—自定义轻量级ORM  C#之23中设计模式
		
连表查询都用Left Join吧 最近看同事的代码,SQL连表查询的时候很多时候用的是Inner Join,而我觉得对我们的业务而言,99.9%都应该使用Left Join(还有0.1%我不知道在 ...
 - ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件
		
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...
 - (八)ASP.NET自定义用户控件(1)
		
http://blog.csdn.net/laodao1/article/details/5897366 ASP.NET自定义控件组件开发 第一章:从一个简单的控件谈起 起始开发ASP.NET自定义控 ...
 - [置顶] ASP.Net中服务器控件的生命周期
		
(1)初始化:在此阶段中,主要完成两项工作:一.初始化在传入Web请求生命周期内所需的设置;二.跟踪视图状态.首先,页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重 ...
 
随机推荐
- GitHub 新手教程 七,Git GUI 新手教程(4),上传本地代码库到GitHub
			
1,打开 GitGUI,单击我们之前克隆好的本地库: 2,按图示顺序点击按钮: 3,按图示顺序点击按钮,输入您的 Sign 信息: 4,按图示顺序点击按钮: 5,弹出新的窗口后,点击 “Push” 按 ...
 - python 游戏(数字推理游戏Bagels)
			
1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...
 - 数据中心网络(1)-VXLAN
			
想写个DC系列的文章,站在传统路由交换网络基础上谈谈数据中心网络,一方面是给自己的学习做下总结,另一方面也想分享一些东西. 谈到数据中心网络,能想到的东西无非就VXLAN.SDN.NFV.EVPN这些 ...
 - Final阶段用户使用报告
			
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2477] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...
 - Error:java: 无效的源发行版: 1.8
			
出现这种情况是gradle或者maven的版本与 本地电脑jdk不一致,具体看一下链接 http://blog.csdn.net/leixingbang1989/article/details/519 ...
 - ejabberd在windows10上安装记录
			
安装完ejabberd:ejabberd-17.11-windows-installer.exe 启动报错:bash ejabberdctl register "admin" &q ...
 - Redis常见面题
			
介绍:Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API的非关系型数据库. 传统数据 ...
 - PHP 验证IP的合法性
			
php验证IP的合法性! function get_ip(){ //判断服务器是否允许$_SERVER if(isset($_SERVER)){ if(isset($_SERVER[HTTP_X_FO ...
 - IdeaVim-常用操作(转载)
			
IdeaVim简介 IdeaVim是IntelliJ IDEA的一款插件,他提高了我们写代码的速度,对代码的跳转,查找也很友好. 安装位置 安装之后它在 Tools > Vim Emulator ...
 - linux命令行打包、压缩及解压缩
			
使用命令: tar 打包: tar -zcvf 目标文件 源文件或文件夹 目标文件为要打包成的文件的文件名, 打包后文件的 格式取决于目标文件的后缀名 单文件或文件夹打包 tar -zcvf ind ...
 
			
		

