创建标记前缀和自定义控件之间的关联,这为开发人员提供了一种在 ASP.NET 应用程序文件(包括网页、用户控件和母版页)中引用自定义控件的简明方法。
语句:
<%@ Register tagprefix="tagprefix1" namespace="namespace1" tagname="tagname1" src="pathname1" assembly="assembly1" %>
属性:
namespace :正在注册的自定义控件的命名空间。
tagprefix :一个任意别名,它提供对包含指令的文件中所使用的标记的命名空间的短引用。
tagname :与类关联的任意别名。此属性只用于用户控件。
src :与 tagprefix:tagname 对关联的声明性 ASP.NET 用户控件文件的位置(相对的或绝对的)。
assembly :与 tagprefix 属性关联的命名空间所驻留的程序集。 (注意:程序集不包括文件扩展名。另外请注意,如果您将自定义控件的源代码文件放置在应用程序的 App_Code 文件夹下,ASP.NET 会在运行时动态编译源文件,因此您不必使用 assembly 属性)
备注:
如果在页或用户控件中包含 @ Register 指令,则可以使用声明性自定义服务器控件语法为自定义服务器控件或用户控件进行布局。
还可以通过使用 Web.config 文件中的 pages 的 controls 元素(ASP.NET 设置架构)在应用程序的所有页上注册自定义控件。
在以下情况中,使用 @ Register 指令:
*以声明方式将自定义服务器控件添加到网页、用户控件、母版页或外观文件。
*以声明方式将用户控件添加到网页、用户控件、母版页或外观文件。
对于声明性用户控件,请使用 tagname、tagprefix 和 src 属性。在页中声明控件时,前两个属性总是以冒号分隔对 (tagprefix:tagname) 的形式一起使用。src 属性值既可以是相对路径,也可以是从应用程序的根目录到用户控件源文件的绝对路径。为方便使用,建议使用相对路径。例如,假设将应用程序的所有用户控件文件存储在应用程序根目录的子目录 /Usercontrol 中。若要包括 Usercontrol1.ascx 文件中的用户控件,请在 @ Register 指令中包含以下内容:
Src="~/usercontrol/usercontrol1.ascx"
其中:代字号 (~) 表示应用程序的根目录。
注意
如果用户控件和包含该控件的页位于同一目录中,则 src 属性值应当为 .ascx 文件的文件名和扩展名。
当包含已经编译为 .dll 文件供应用程序使用的自定义服务器控件时,请将 tagprefix 属性与 assembly 和 namespace 属性一起使用。如果没有包含 namespace 属性,或者给该属性分配了一个空字符串 (""),则会出现分析器错误。
警告
在开发自定义服务器控件时,必须将其包含在命名空间中。如果没有包含在命名空间中,则将无法从 ASP.NET 页中访问该控件。有关开发自定义 ASP.NET 服务器控件的更多信息,请参见开发自定义 ASP.NET 服务器控件。
示例:
下面的代码示例使用 @ Register 指令声明 tagprefix 和 tagname 别名,同时分配 src 属性以在网页内引用用户控件。代码的第一部分是由一个 ASP.NET Calendar 控件组成的简单用户控件。代码的第二部分是承载该控件的页。请注意,tagprefix 属性分配一个用于标记的任意前缀值。tagname 属性使用分配给用户控件的类名称的值(尽管此属性的值是任意的,并可使用任何字符串值,但是您不必使用所引用的控件的类名称)。src 属性指向用户控件的源文件(相对于应用程序根文件夹)。按照如下形式,使用前缀、冒号以及标记名称在页面主体内引用用户控件:<uc1:CalendarUserControl runat="server" />
。
<%@ Control ClassName="CalendarUserControl" %> <asp:calendar id="Calendar1" runat="server" /> <%@ Page %> <%@ register tagprefix="uc1" tagname="CalendarUserControl" src="~/CalendarUserControl.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Calendar Page</title> </head> <body> <form id="form1" runat="server"> <uc1:calendarusercontrol runat="server" /> </form> </body> </html>