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

问题:

在ASP.NET 的早先版本里,开发人员通过在页面的顶部添加 指令来引入和使用自定义服务器控件和用户控件时,象这样:

 

<%@ 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>

希望本文对你有所帮助,

 

时间: 2024-09-12 14:27:31

如何在Web.config中注册用户控件和自定义控件的相关文章

用户控件和自定义控件的比较及在项目中的应用

比较|控件|项目 用户控件和自定义控件的比较及在项目中的应用 摘 要 本文档描述了服务器控件的基本概念,以及用户控件和自定义控件在部署.创建.内容和布局.设计期行为.性能几个方面的比较,然后给出一个在项目开发中服务器控件使用的建议,最后给出一个用户控件的创建和调用的例子. 关 键 词 Server Control 服务器控件 User Control 用户控件,ASP.NET服务器控件的一种(一般后缀名为.ASCX文件) Custom Control 自定义控件,ASP.NET服务器空间的一种(

在ASP.NET中使用用户控件

asp.net|控件 [摘要]ASP.NET中提供的用户控件,可以解决ASP中无法解决的代码重用问题,更方便了调试工作中的错误检查.本文通过用户控件实现方法讲解和一个用户控件例程的实现,进一步验证了利用用户控件解决代码重用的可行性和有效性. [关键字]代码重用.用户控件.@Register指令 ASP.NET提供了比传统ASP更好的代码分离方案.在传统的ASP中,要将用Server. Execute执行的ASP文件或事务对象组件的代码分离开,一般只能将代码分离成几个文件,然后使用"include

在.net应用程序中使用用户控件

程序|控件 在.net应用程序中使用用户控件 郑佐2004-11-30 做过asp.net的人都知道开发的时候使用用户控件很方便,为功能模块化提供了相当大的灵活性.令人高兴的是开发Windows窗体也可以使用用户控件.这里我们来看看为用户控件添加属性和事件,并实现把消息发送到父容器.本文主要是为没有使用过用户控件的朋友提供一些参考. 用户控件的实现比较简单,直接从System.Windows.Forms.UserControl. public class UserControl1 : Syste

关于ASP.NET2.0 中的用户控件编程使用

asp.net|编程|控件 今天用了一下2.0中的用户控件,发现使用编程方式使用用户控件,跟1.X 中截然不同. 1.首先,要在所要使用的Page 头部声明引用.如下: <%@ Reference Control="../Controls/AlbumEditor.ascx" %> 2.在后置代码里,从"ASP"空间中就可以找到此控件的类引用了,不过还需要事例一下.-_-! 不明白设计者为什么要这么做,还不如1.1 那样直观.如下:  ASP.Contro

wpf中的用户控件库项目不能使用WindowsFormsHost??急!!!

问题描述 基于sharpdevelop框架的WPF开发,想在用户控件库项目中使用reportviewer控件,用了WindowsFormsHost,但是运行后不显示reportviewer.如果换成wpf窗体,就能显示reportviewer界面和数据.wpf中的用户控件库项目不能使用WindowsFormsHost吗? 解决方案 解决方案二:WindowsFormsHost是专门为window窗体设计的.放弃吧

用户控件和自定义控件的定义及区别

控件|区别 (一).用户控件和自定义控件概述         用户控件(UserControl):  扩展名为*.ascx,跟*.aspx在结构上相似,是指页面中  加载的功能块,只是用户控件不能单独作为页面运行,必须嵌入到*.aspx页面或其它用  户控件中使用.         自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里  面,直接用鼠标拖动使用.   (二).使用               在一个大系统中,有时候会只能几个*.aspx页面

关于Web.config中控制用户访问权限的问题!

问题描述 我在Web.config中对各个用户或者角色对某个路径的设置在调试中正常,但在iis中发布中发现必须设置某种文件(如txt文件)的映射才能有效控制权限!但是实际应用中涉及的文件类型千变万化,我不可能一个个手动设置啊!请问有没有通用的方法? 解决方案 解决方案二:这样设计权限的初衷?解决方案三:可以用用户权限组做解决方案四:用户权限组具体怎么做?<?xmlversion='1.0'encoding='utf-8'?><configuration><system.web

.net 如何在web.config中读取自定义节点以及注意的问题

web|问题 这几天在做一个urlMapping类库的时候用到了如何读取web.config中自定义节点, 做完后觉得挺好 现就制作过程叙述一下. web.config文件在web application中起着非常重要的作用. 它本身包含了授权,handler,compilation,globalization,错误与跟踪等一系列设置.但是当你需要一些特殊的或者想添加自己的settings时,应该如何做呢? 要创建自定义设置 要求有2步:写cs代码 和 修改web.config 代码 这里我们创

ASPX中的用户控件与ASP中的INCLUDE方法对比

include|控件     在ASP的年代里,为了避免经常性重复的劳动,对一些功能相似的区域或者代码,经常作成一个文件,然后通过连接(直接连接或者虚拟连接)的方法引入到ASP网页文件之中,对于一个很大的引用了很多ASP文件就相当于一个文件被分成了很多块,彼此文件之间的数据是可以自由共享的(除了函数之中的数据).    ASPX的用户控件就与INCLUDE有很大的不同了,它的最大特点就是在于他是以包装好的对象的形式呈现,通过我们的编程,可以将一个公用的事例抽象出来,将一些功能和方法总结出来,作成