如何在Web.config中注册用户控件和自定义控件

原创 2007年10月13日 09:17:00
 在ASP.NET 的早先版本里,开发人员通过在页面的顶部添加 <%@ Register %> 指令来引入和使用自定义服务器控件和用户控件时,象这样: 
<%@ Register TagPrefix="scott" TagName="header" Src="Controls/Header.ascx" %>
<%@ Register TagPrefix="scott" TagName="footer" Src="Controls/Footer.ascx" %>
<%@ Register TagPrefix="ControlVendor" Assembly="ControlVendor" %>

<html>
<body>
    <form id="form1" runat="server">
        <scott:header ID="MyHeader" runat="server" />
    </form>
</body>
</html>
 
注意到上面的前两个注册指令是用来注册用户控件的(是在.ascx文件里实现的),最后这个是用来注册编译进一个程序集 .dll 文件里的自定义控件的。注册完后,开发人员可以在页面的任何地方用设定好的 tagprefix (标识前缀)和标识符号名( tagname)来声明这些控件。 

这行之有效,但管理起来会很痛苦,当你要在你的网站的许多页面上使用控件的话,尤其是,假如你移动了.ascx 文件,需要更新所有的注册声明的话。

解决方案:

ASP.NET 2.0 使得控件声明极其干净而且管理起来极其容易。不用在你的页面上重复这些声明,只要在你的应用的web.config 文件的新的 pages->controls 部分声明一次即可: 
<?xml version="1.0"?>

<configuration>
  <system.web>    
    <pages>
      <controls>
        <add tagPrefix="scottgu" src="~/Controls/Header.ascx" tagName="header"/>
        <add tagPrefix="scottgu" src="~/Controls/Footer.ascx" tagName="footer"/>
        <add tagPrefix="ControlVendor" assembly="ControlVendorAssembly"/>
      </controls>
    </pages>
  </system.web>
</configuration> 

你可以用这种方式同时声明用户控件和编译好的自定义控件。 当你使用这个技巧时,Visual Studio是完全支持这两者的,而且 VS 2005 Web Site 项目 和  VS 2005 Web Application 项目也都支持这两者。Visual Studio会在设计器里以所见即所得(WYSIWYG)模式显 示这些控件,也会在后台编码文件里提示控件字段的声明。 

需要注意的是,上面用户控件中“~”句法的使用。对那些不熟悉这个符号的人, ASP.NET中“~”符号意思是“从应用的根路径来定位”,它提供了一个很好的方法来避免在你的编码里到处使用“../”。在web.config文件 里声明用户控件时,你总是应该使用它,因为页面也许会使用在不同子目录里的控件,所以你应该总是始终如一地从应用的根路径开始定位这些控件。

一旦你在web.config 文件中声明好这些控件后,你就可以在你网站上的任何一个页面,母板页或者用户控件中使用它们了,象这样(不再需要注册指令):
<html>
<body>
    <form id="form1" runat="server">
        <scottgu:header ID="MyHeader" runat="server" />
    </form>
</body>
</html> 

Asp.net 用户控件添加自定义事件asp.net

Asp.net 用户控件添加自定义事件asp.net
  • Sunqlive
  • Sunqlive
  • 2016年09月07日 11:17
  • 868

asp.net WebForm之用户自定义控件

关于用户自定义控件,想必大家已经非常熟悉了。虽然说经常用过,但是只是简单的使用而已。在这里再次总结一下Asp.net中的UserControl,以便下次使用时 能够得心应手。本文将会介绍以下内容...
  • ydm19891101
  • ydm19891101
  • 2016年05月11日 09:45
  • 2673

用户控件&自定义控件----.Net再学

开始学习.Net到现在两年了快,开始学习java 也有大半年了,中间做项目,又开始.Net的学习。这次做.Net项目,后台代码敲的不是太多,重点放在了UI上,这也是这篇博客要写的内容有关,做UI就少不...
  • wangyongxia921
  • wangyongxia921
  • 2015年01月30日 22:42
  • 1257

MFC 自定义控件使用实践

MFC 自定义控件使用实践(1) 转载前记:说实在的,这个方法太麻烦了,我感觉最方便的方法是, 1从CWnd或者CView派生一个类, 2在对话框或者普通窗口上,定义类对象 theObj, 3在On...
  • worldy
  • worldy
  • 2013年11月15日 10:50
  • 6357

WPF之路——用户控件对比自定义控件(UserControl VS CustomControl)

在WPF中,概念上来说用户自己制作的控件有两种:用户控件和自定义控件。但是这两种控件之间有什么区别?这篇文章中列出了他们各自的特点,以便在项目中选择选择合适的控件类型。 用户控件(组合) ...
  • qianshen88
  • qianshen88
  • 2013年11月28日 09:35
  • 9249

C#的自定义控件

C#的UserControl让用户自定义控件容易了很多,创建WindowsFormsControlLibrary工程,自定义UserControl,生成的.dll加入到任何新工程,就能在新工程中使用自...
  • u010153703
  • u010153703
  • 2014年08月06日 22:43
  • 1812

在WPF中使用WinForm或自定义控件

WPF中,好多控件与WinForm是存在差异的,想要使用熟悉的WinForm控件,除了添加必要的System.Windows等系统库之外,还要添加如下的代码,以下是msdn上给的,初步测试没问题 。 ...
  • n0noper
  • n0noper
  • 2016年05月27日 14:22
  • 711

3.为自定义控件添加属性

3.为自定义控件添加属性 原文请看我博客:http://clzf.co/blog.php?id=3 前面"废话"了两篇 现在开始慢慢的踏入自定义控件开发的主题 首先来说说属性 对于一个控件来说属...
  • crystal_lz
  • crystal_lz
  • 2014年03月28日 20:04
  • 11400

C# 中的用户自定义控件和WPF的配合使用

一天终于又结束了!突然发现,不论我们做什么,在哪个岗位上,每天都会有一个或者多个的让我们意想不到的困难。对于那些困难,有的或许我们直接就能解决,有的或许需要我们去思考一下,而更有的要困扰我们几个小时,...
  • u010375663
  • u010375663
  • 2015年07月30日 22:50
  • 1480

在WPF中自定义控件

周银辉的开发博客(WPF) 在WPF中自定义控件(1) 一, 不一定需要自定义控件 在使用WPF以前,动辄使用自定义控件几乎成了惯性思维,比如需要一个带图片的按钮,但在WPF中此类任...
  • jiangxinyu
  • jiangxinyu
  • 2013年03月07日 10:49
  • 22234
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在Web.config中注册用户控件和自定义控件
举报原因:
原因补充:

(最多只允许输入30个字)