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自定义服务器控件内部细节系列教程四
如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...
- asp.NET自定义服务器控件内部细节系列教程五
如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...
- asp.NET自定义服务器控件内部细节系列教程一
如大家要转载,请保留本人的版权: /* *Description:asp.NET自定义服务器控件内部细节系列教程 *Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.co ...
- ASP.net 自定义服务器控件之 GridViewControl
根据项目需要,提供自定义服务器控件之 GridViewControl,提供数据为空时的自定义显示. [DefaultProperty("EnableEmptyContentRender&qu ...
- 演练:开发和使用自定义服务器控件
更新:2007 年 11 月 此演练演示如何创建和编译自定义 ASP.NET 服务器控件以及如何在页中使用该控件. 通过此演练,您将学会如何执行以下任务: 创建一个 ASP.NET 服务器控件. 向该 ...
- 开发和使用自定义服务器控件
ASP.NET 演练:开发和使用自定义服务器控件 此演练演示如何创建和编译自定义 ASP.NET 服务器控件以及如何在页中使用该控件. 通过此演练,您将学会如何执行以下任务: 创建一个 ASP.NET ...
- ASP.NET2.0服务器控件之类型化样式属性
实现类型化样式属性的方法 继承自Style类的类称为类型化样式.Style类可以由控件开发人员来扩展,创建一个自定义类型化样式,它重写或者添加Style类的属性.服务器控件也可以把自定义类型化样式作为 ...
- 【ASP.NET】服务器控件大演练与实例分析
asp服务器控件 简介(特点):保存视图状态,公共对象模型,简单,用户定制,创建浏览器特定HTML web服务器控件:文本控件(2个) 1) TextBox控件 <asp:TextBox ID= ...
- 一起谈.NET技术,ASP.NET2.0服务器控件之类型转换器
类型转换器是实现自定义服务器控件属性过程中比较重要的内容.本文将对类型转换器的基本概念和实现方法进行介绍. 1. 类型转换器基本概念 类型转换器是自定义服务器控件的辅助性功能实现.它主要用于执行从字符 ...
最新文章
- Python3 的多线程使用:_thread,threading,multiprocessing
- mysql三锁,mysql锁机制之表锁(三)
- jittor 训练手写数字识别(mnist)
- 第八周项目一-数组作数据成员(1)
- PyCharm配置anaconda环境 安装第三方库
- 网页按钮跳转位置_RPA工具BizRobo!之运用网页数据处理
- java 与 乱码问题_透彻分析和解决一切javaWeb项目乱码问题
- WCF Rest Service
- 鱼骨图和甘特图图表合集PPT模板
- FA:标准萤火虫算法及Python实现
- 数据结构实验:电话号码查询系统
- mysql源码解读——MVCC
- 联想拯救者 Legion Y7000P 安装 Ubuntu 18.04.2 LTS amd64 遇到的问题解决
- uniapp实现公众号H5、小程序和App微信授权登录功能
- 2018天津大学夏令营机试第二题
- ERP项目应该由谁来主导?
- 我如何在没有学位或参加训练营的情况下找到我的第一份软件开发人员工作
- CarSim与Simulink联合仿真——ABS
- SourceTree Clone非常慢原因
- React Native专题-江
热门文章
- java 僵尸进程_Linux 僵尸进程
- python笛卡尔_用Python 3来模拟笛卡尔积
- oracle 带库,ORACLE RMAN下针对带库装置的操作
- 计算机考级各省份难度,2018年全国各省份高考难度排名,基于高分率最新统计数据!...
- tar解压失败:gzip: stdin: not in gzip format
- TensorFlow保存和恢复模型的方法总结
- 异常捕获,返回错误码code给前端
- Spark基础学习笔记07:搭建Spark HA集群
- Python编程基础12:函数和模块
- 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2