C# <%@ Register %>指令

时间:2023-03-09 00:23:57
C# <%@ Register %>指令
将别名与命名空间及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法。
<%@ register tagprefix="tagprefix" namespace="namespace" assembly="assembly" %>
<%@ register tagprefix="tagprefix" tagname="tagname" src="pathname" %>
属性
tagprefix
与命名空间关联的别名。
tagname
与类关联的别名。
namespace
与 tagprefix 关联的命名空间。
src
与 tagprefix:tagname 对关联的声明性用户控件文件的位置(相对的或绝对的)。
assembly
与 tagprefix 关联的命名空间所驻留的程序集。
注意 程序集名称不包括文件扩展名。
备注
如果在页或用户控件中包含 @ register 指令,则可以使用声明性自定义服务器控件语法为自定义服务器控件或用户控件布局。
在以下情况中,使用 @ register 指令。
通过声明将自定义 asp.net 服务器控件添加到页或用户控件。
将声明性用户控件添加到页或用户控件。
对于声明性用户控件,请使用 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 别名。第一条指令将 mytag 别名声明为驻留在 mycompany:mynamespace 命名空间中的所有控件的标记前缀。第二条指令将 acme:adrotator 声明为文件 adrotator.acscx 中用户控件的 tagprefix:tagname 对。然后,在窗体的自定义服务器控件语法中使用别名,为每个服务器控件插入一个实例。
<%@ register tagprefix="mytag" namespace="mycompany:mynamespace" assembly="myassembly" %>
<%@ register tagprefix="acme" tagname="adrotator" src="adrotator.ascx" %>
<html>
<body>
<form runat="server">
<mytag:mycontrol id="control1" runat="server" /><br>
<acme:adrotator file="myads.xml" runat="server" />
</form>
</body>
</html>