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-->"
)]
public
class
RedLabel : Label
{
//重写RenderContent函数,输出控件内容
protected
override
void
RenderContents(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()方法,控件开发人员可以重 ...
随机推荐
- 【转】Cocos2d-x 3.x基础学习: 总结数学类Vec2/Size/Rect
转载:http://www.taikr.com/article/1847 在Cocos2d-x 3.x中,数学类Vec2.Size.Rect,是比较常用的类.比如设置图片位置,图片大小,两图片的碰撞检 ...
- yocto-sumo源码解析(二): oe-buildenv-internal
1 首先,脚本先对运行方式进行了检测: if ! $(return >/dev/null 2>&1) ; then echo 'oe-buildenv-internal: erro ...
- kubeadm安装kubernetes 1.13.1集群完整部署记录
k8s是什么 Kubernetes简称为k8s,它是 Google 开源的容器集群管理系统.在 Docker 技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提 ...
- linux内核分析第二次实验
http://blog.sina.com.cn/s/blog_78e559950102wnqp.html
- linux内核分析--计算机是如何工作的
实验部分 使用gcc -S -o main.s main.c -m32命令将源代码编译成汇编代码. 源代码如下: int g(int x) { return x + 9; } int f(int x) ...
- 基于Struts2+Hibernate的朋友圈留言网站开发的质量属性
在课堂上我们了解了质量高于功能,质量属性是指影响质量的相关因素,是对质量的描述.现在我们对基于SSH的交友网站开发的质量属性可以从以下几个方向进行分析: (1)可用性: 当错误发生时,使用可用性战术进 ...
- DeepID人脸识别算法之三代
DeepID人脸识别算法之三代 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/42091205 DeepID,眼下最强人脸识别算法.已经三 ...
- php 的优缺点
1.优点:开源 免费性 快捷性 [程序开发快,运行快,技术本身学习快] 插件丰富,网上的解决方案有很多,而且还有庞大的开源社区可以提供帮助. 跨平台性强 效率高 图像处理 面向对象 [在php4 ...
- Python进阶-配置文件
一. 什么是配置文件?为什么要做配置文件? 将所有的代码和配置都变成模块化可配置化,这样就提高了代码的重用性,不再每次都去修改代码内部,这个就是我们逐步要做的事情,可配置化 二. 配置文件长啥样? 配 ...
- MySQL:日期类型
1. datetime(年月日时分秒) 格式:‘YYY-MM-DD HH:MM:SS’. 占用:8字节 范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59. ti ...