用户控件简介

      用户控件使程序员能够很容易地跨ASP.NET WEB应用程序划分和重复使用公共UI功能。与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。但与WEB窗体页不同的是,不能独立地请求用户控件,用户控件必须包括在WEB窗体页内才能使用。

创建用户控件

      可以通过使用文本或HTML编辑器以声明方式创建用户控件。用户控件声明语法与创建WEB窗体页所采用的语法十分类似;两者的主要差别在于用户控件在内容周围不包括<html>、<body>和<form>元素。在包含用户控件的WEB窗体页中包括这些元素。用户控件可以像文本文件一样简单,或者它们可以包含其他ASP.NET服务器控件。以下过程简要介绍了一个可包括在应用程序多个页上的简单登录窗体。
      【注意】当用户控件包括在WEB窗体页中时,此用户控件中包含的任何ASP.NET服务器控件的所有属性和方法都将提升为此用户控件的公共属性和方法。

使用用户控件

      将此用户控件包括在Web窗体页中时,需要在@Register指令的Src属性中包括此文件名称以及该文件的路径。

      在要包含用户控件的 WEB 窗体页中,声明一个@Register指令,该指令包括:

      tagprefix属性,该属性将前缀与用户控件相关联。此前缀将包括在用户控件元素的开始标记中。

      tagname属性,该属性将名称与用户控件相关联。此名称将包括在用户控件元素的开始标记中。

      Src属性,该属性定义要包括在WEB窗体页中的用户控件文件的虚拟路径。
   
      Example:<%@ Register TagPrefix="Acme" TagName="WebUserControl" Src=".\WebUserControl.ascx" %>
      Usage:<acme:WebUserControl id="LoginForm" runat="server"/>

用户控件使用小结

      用户控件使开发人员能够使用编写WEB窗体页的相同编程技巧轻松地定义自定义控件。 作为约定,用.ascx文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的WEB窗体页执行。

      用户控件通过Register指令包括在另一WEB窗体页中,该指令指定TagPrefix、TagName和Src location。

      注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在WEB窗体页中(包括runat="server"属性)。在包含WEB窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。

      用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含WEB窗体页的一些页逻辑。

      用户控件不应包含任何窗体控件,而应依靠其包含WEB窗体页在必要时包括窗体控件。

      可以使用System.WEB.UI.Page类的LoadControl方法以编程方式创建用户控件。用户控件的类型由ASP.NET运行库决定,遵循约定文件名_扩展名。

      只有当为用户控件包括了Register指令时,用户控件的强类型才能由包含WEB窗体页使用(即使没有实际声明的用户控件标记)。