3. 调用用户控件
用户控件仅在包含在 WEB 表单页面中时才起作用。 当对包含用户控件的页面的请求到达时,用户控件将经历任何服务器控件所经历的所有处理阶段。
在 WEB 表单页面中包含用户控件很简单。
在将包含用户控件的WEB表单页面中,声明一个@指令,其中包括:
将前缀与用户控件关联的属性。 该前缀将包含在用户控件元素的开始标记中。
将名称与用户控件关联的属性。 该名称将包含在用户控件元素的开始标记中。
src属性,定义WEB表单页面中要包含的用户控制文件的虚拟路径。
例如,以下代码将注册文件 .ascx 中定义的用户控件。 该控件还分配有标签前缀 Acme 和标签名称 Login。
<%@ ="Acme" ="" Src=".\.ascx" %>
使用自定义服务器控件语法在服务器控件的开始和结束标记之间声明用户控件元素 (<form runat=></form>)。 例如,要声明在上一步中导入的控件,请使用以下语法。
<%@ 页 ="vb" ="false" =".aspx.vb" ="."%>
<%@ ="Acme" ="" Src=".\.ascx" %>
<! HTML“-//W3C//DTD HTML 4.0 //EN">
<HTML>
<头部>
<标题></标题>
<meta=".NET 7.0">
<元=“基础7.0”>
<元=“”>
<元=“”>
</头>
<正文=“”>
<form="post" runat="">
<Acme:runat=""/>
</形式></身体>
</HTML>
[注意] 无论 WEB 表单页面上包含多少个 ASP.NET 服务器控件(用户控件和任何其他控件),WEB 表单页面上都只能包含一个服务器控件。 所有服务器控件都应包含在该控件的开始标记和结束标记之间。
通过上面的程序,在.aspx页面中调用名为.ascx的用户控件,结果如下所示:
4. 用户控件使用总结
(1) 用户控件使开发人员能够使用与编写 WEB 表单页面相同的编程技术轻松定义自定义控件。 按照惯例,此类控件用 .ascx 文件扩展名表示。 这保证了用户控制文件不能作为独立的WEB表单页面来执行。
(2)通过指定Src的指令将用户控件包含在另一个WEB表单页面中。
(3)注册用户控件后,就可以像普通服务器控件一样将用户控件标记放置在WEB表单页面中(包括runat=""属性)。 将用户控件的公共字段、属性和方法提升为包含WEB表单的页面中控件的公共属性(标记属性)和方法。
(4) 用户控件参与每个请求的整个执行生命周期,并且可以处理自己的事件并从包含WEB表单的页面中封装一些页面逻辑。
(5) 用户控件不应包含任何表单控件,但在必要时应依赖其包含的WEB表单页面来包含表单控件。
(6) 可以使用.WEB.UI.Page 类的方法以编程方式创建用户控件。 用户控件的类型由 ASP.NET 运行时库确定,并遵循文件名_扩展名的约定。
(7) 仅当包含用户控件的指令时(即使没有实际声明的用户控件标记),包含 WEB 表单页面才能使用用户控件的强类型。
5. 结论
在编写WEB应用程序时,如果所有可能重复出现的元素都用用户控件来实现,那么维护代码的成本将会大大降低。 而且在修改代码时,记住修改一段代码但忘记修改另一段相同代码的情况将不再存在。 代码越短,发生错误的因素就越少,发生错误的可能性也就越小。