ASP.NET里用户控件和WEB窗体的区别
用户控件使程序员能够很容易地跨ASP.NET WEB应用程序划分和重复使用公共UI功能。与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。但与WEB窗体页不同的是,不能独立地请求用户控件,用户控件必须包括在WEB窗体页内才能使用。
与服务器端包含文件(SSI)相比,用户控件通过访问由ASP.NET提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何ASP.NET服务器控件一样。
尽管在创作用户控件时需要选择一种语言,但程序员可以将多个用户控件包含在用多种语言创作的一个WEB窗体页中。例如,可以用Visual Basic.NET创造一个用户控件,导入来自XML文件的数据,再用C#创建另一个用户控件,该控件包含一个订单窗体,然后在同一个WEB窗体页中包括这两个控件。
此外,可以独立于包含用户控件的WEB窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的ASP.NET服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。
2、创建用户控件
可以通过使用文本或HTML编辑器以声明方式创建用户控件。用户控件声明语法与创建WEB窗体页所采用的语法十分类似;两者的主要差别在于用户控件在内容周围不包括<html>、<body>和<form>元素。在包含用户控件的WEB窗体页中包括这些元素。
用户控件可以像文本文件一样简单,或者它们可以包含其他ASP.NET服务器控件。以下过程简要介绍了一个可包括在应用程序多个页上的简单登录窗体。
在代码声明块中公开属性、事件处理程序以及要包括在用户控件功能中的其他任何代码。在使用用户控件的属性时有两个选择。首先,可以定义用户控件的新属性并操作它们。其次,可以操作构成用户控件的服务器控件的属性。例纾谟没Э丶猩鱐extbox WEB服务器控件,并向它提供一个ID为PASSWORD,则可以通过使用PASSWORD. Text语法来操作其Text属性。
【注意】当用户控件包括在WEB窗体页中时,此用户控件中包含的任何ASP.NET服务器控件的所有属性和方法都将提升为此用户控件的公共属性和方法。
在 WEB 窗体页中包括用户控件的方法很简单。
在要包含用户控件的 WEB 窗体页中,声明一个@Register指令,该指令包括:
tagprefix属性,该属性将前缀与用户控件相关联。此前缀将包括在用户控件元素的开始标记中。
tagname属性,该属性将名称与用户控件相关联。此名称将包括在用户控件元素的开始标记中。
Src属性,该属性定义要包括在WEB窗体页中的用户控件文件的虚拟路径。
例如,以下代码将注册在文件LoginForm.ascx中定义的用户控件。该控件还被指定有标记前缀Acme和标记名称Login。
<%@ Register TagPrefix="Acme" TagName="LoginForm" Src=".\LoginForm.ascx" %>
例如,要声明在上一步导入的控件,使用以下语法。
<Acme:LoginForm id=" LoginForm " runat="server"/>
浙公网安备 33010602011771号