【转】【Asp.Net】asp.net服务器控件创建
VS新建一个Web服务控件工程,会默认生成以下代码:
namespace WebControlLibrary
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:HelloWorld runat=server></{0}:HelloWorld>")]
public class HelloWorld : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
} set
{
ViewState["Text"] = value;
}
} protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
刚开始接触ASP.NET控件和组件开发,第1个疑问就是DefaultProperty 、ToolBoxData分别是什么含义?
[DefaultProperty("Text")]
[ToolboxData("<{0}:HelloWorld runat=server></{0}:HelloWorld>")]
DefaultProperty是设置控件默认的属性的。
ToolBoxData的意思是当你将这个控件从工具箱中拖放到WebForm中时在aspx文件的HTML代码中添加的对该控件的定义。
这里面的{0}表示什么意思?
控件的标记的前缀 就是你拖这个控件到页面上时候 他就自动添加<{0}:HelloWorld runat=server></{0}:HelloWorld>,这个{0}是你定义的。
那究竟{0}如何定义呢?
修改Visual Studio自动产生的代码,增加下面的一行
[assembly: TagPrefix("WebControlLibrary", "aspNet")]
namespace WebControlLibrary
{
//其他代码不变
}
重新生成控件项目。
新建网站,把新生成的控件拖到新建的Web窗体上,切换到源视图状态,可以看到控件定义标记为:
<aspNet:HelloWorld ID="HelloWorld1" runat="server" />
其中的aspNet正是我们用[assembly: TagPrefix("WebControlLibrary", "aspNet")]定义的。
同时,在使用页面上部可以看到如下的标记:
<%@ Register assembly="WebControlLibrary" namespace="WebControlLibrary" tagprefix="aspNet" %>
再查一下msdn,TagPrefixAttribute的基本使用:
public TagPrefixAttribute( string namespaceName, string tagPrefix )
当然,自定义ASP.NET服务器控件TagPrefix,也可以修改网站的Web.config文件:
<configuration>
<system.web>
<pages>
<controls>
<add assembly="WebControlLibrary" namespace="WebControlLibrary" tagPrefix="AspNet"/>
</controls>
</pages>
</system.web>
</configuration>
<!--也可以在使用的页面添加下面这句进行注册控件-->
<%@ Register assembly="WebControlLibrary" namespace="WebControlLibrary" tagprefix="aspNet" %>
这样,拖动控件到页面上时,控件的tagPrefix为AspNet:
<AspNet:HelloWorld ID="HelloWorld1" runat="server" />
原文地址:http://www.cnblogs.com/zhouhb/archive/2012/04/16/2452783.html
【转】【Asp.Net】asp.net服务器控件创建的更多相关文章
- 一个在ASP.NET中利用服务器控件GridView实现数据增删改查的例子
备注:这是我辅导的一个项目开发组的一个例子,用文章的方式分享出来,给更多的朋友参考.其实我们这几年的项目中,都不怎么使用服务器控件的形式了,而是更多的采用MVC这种开发模式.但是,如果项目的历史背景是 ...
- ASP.NET 2.0服务器控件开发的基本概念(转载)
利用ASP.NET 2.0技术,创建Web自定义服务器控件并不是一件轻松的事情.因为,这需要开发人员了解并能够灵活应用多种Web开发技术,例如,CSS样式表.客户端 脚本语言..NET开发语言.服务器 ...
- 【ASP.NET】Validation 服务器控件
Validation 服务器控件 Validation 服务器控件用于验证输入控件的数据.如果数据未通过验证,则向用户显示错误消息. 创建 Validation 服务器控件的语法是: <asp: ...
- 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用
由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...
- ASP.NET Web API 过滤器创建、执行过程(二)
ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...
- ASP.NET Web API 过滤器创建、执行过程(一)
ASP.NET Web API 过滤器创建.执行过程(一) 前言 在上一篇中我们讲到控制器的执行过程系列,这个系列要搁置一段时间了,因为在控制器执行的过程中包含的信息都是要单独的用一个系列来描述的,就 ...
- ASP.NET Web API 控制器创建过程(二)
ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...
- ASP.NET Web API 控制器创建过程(一)
ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...
- 【初学者指南】在ASP.NET MVC 5中创建GridView
介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序创建更复杂的数据模型
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序 ...
随机推荐
- 404 & 401 Errors with the App Management Service
from:http://blogs.technet.com/b/sharepoint_-_inside_the_lines/archive/2013/06/23/404-amp-401-errors- ...
- Android--Apache HttpClient
前言 上一篇文章介绍了使用HttpURLConnection来完成对于HTTP协议的支持.现在介绍一个新的方式来访问Web站点,那就是HttpClient. HttpClient是Apache开源组织 ...
- 理解Lucene索引与搜索过程中的核心类
理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.Directory.Analyzer.Document.Field 1.IndexWriter IndexWr ...
- Web应用程序系统的多用户权限控制设计及实现-用户模块【7】
前五章均是从整体上讲述了Web应用程序的多用户权限控制实现流程,本章讲述Web权限管理系统的基本模块-用户模块.用户模块涉及到的数据表为用户表. 1.1用户域 为了更规范和方便后期系统的二次开发和维护 ...
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(四)Alert View视图 学习笔记
当我们的应用电量不足的时候,就需要警告提示,那么我们可以用Alert View视图 实现:
- poj邮局1160
题目是给出V个村庄,取出P个做为邮局,要求每个村庄到邮局的距离和最小. 先考虑只有一个邮局的情况,不管你怎么放邮局和最小的情况总是在中点的位置. 再来考虑P>1的情况: 假设P-1个邮局已经选好 ...
- JavaScript Patterns 3.2 Custom Constructor Functions
When you invoke the constructor function with new, the following happens inside the function: • An e ...
- 【php】使用phpdbg来调试php程序
PHPDBG是一个PHP的SAPI模块,可以在不用修改代码和不影响性能的情况下控制PHP的运行环境 可以在PHP5.4和之上版本中使用.在PHP5.6和之上版本将内部集成 功能 单步调试 灵活的下断点 ...
- SQL基础(2)-约束
1. 添加主键约束 a.创建表时添加主键(默认系统命名主键) create table pt_ticket_info( id varchar2(50) primary key not null, -- ...
- sql server 之函数小技巧 && 整数类型为空是用空字符串替代实现
1.判空函数 说明:使用指定的替换值替换 NULL. 语法:ISNULL ( check_expression , replacement_value ) 参数: check_expression:将 ...