我们在制作asp.net动态网页设计作业时,Web用户控件是一个重要知识点,下面是对其的介绍
用户控件与普通的Web页比较
ASP.NET Web用户控件(.ascx文件)与完整的ASP.NET网页(.aspx文件)相似,同样具有用户界面和代码,开发人员可以采取与创建ASP.NET页相似的方法创建用户控件,然后向其中添加所需的标记和子控件。用户控件可以像ASP.NET页一样对包含的内容进行操作(包括执行数据绑定等任务)。
用户控件与ASP.NET网页有以下区别:
用户控件的文件扩展名为.ascx。
用户控件中没有@Page指令,而是包含@Control指令,该指令对配置及其他属性进行定义。
用户控件不能作为独立文件运行,而必须像处理任何控件一样,将它们添加到ASP.NET页中。
用户控件中没有html、body或form元素。
用户控件的优点
用户控件提供了一个面向对象的编程模型,在一定程度上取代了服务器端文件包含(<!--#include-->)指令,并且提供的功能比服务器端包含文件提供的功能多。使用用户控件的优点如下:
可以将常用的内容或者控件以及控件的运行程序逻辑设计为用户控件,然后便可以在多个网页中重复使用该用户控件,从而省去许多重复性的工作。如网页上的导航栏,几乎每个页都需要相同的导航栏,可以将其设计为一个用户控件,在多个页中使用。
如果网页内容需要改变,只需修改用户控件中的内容,其他添加使用该用户控件的网页会自动随之改变,因此网页的设计以及维护变得简单易行。
访问用户控件的属性
ASP.NET提供的各种服务器控件都有其自身的属性和方法,程序开发人员可以灵活地使用服务器控件中的属性和方法开发程序。在用户控件中,程序开发人员也可以自行定义各种属性和方法,从而灵活地应用用户控件。
this.Label1.Text = this.WebUserControl1.str_userName.ToString();
访问用户控件中的服务器控件
程序开发人员可以在用户控件中添加各种控件,如Label控件、TextBox控件等,但当用户控件创建完成后,将其添加到网页时,在网页的后台代码中不能直接访问用户控件中的服务控件的属性。为了实现对用户控件中的服务器控件的访问,必须在用户控件中定义公有属性,并且利用get访问器与set访问器来读取、设置控件的属性。
将Web网页转化为用户控件
用户控件与Web网页的设计几乎完全相同,因此,如果某个Web网页完成的功能可以在其他Web页中重复使用,可以直接将Web网页转化成用户控件,而无须再重新设计。
将Web网页转化成用户控件,需要进行以下操作:
(1) 在.aspx(Web网页的扩展名)文件的HTML视图中,删除<html>、<head>、<body>以及<form>等标记。
(2)将@Page指令修改为@Control,并将Codebehind属性修改成以.ascx.cs为扩展名的文件。例如,原Web网页中的代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
需要修改为:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Default.ascx.cs" Inherits=" WebUserControl " %>
(3)在后台代码中,将public class声明的页类删除,改为用户控件的名称,并且将System.Web. UI.Page改为System.Web.UI.UserControl。例如:public partial class _Default : System.Web.UI.Page
需要修改为:public partial class WebUserControl : System.Web.UI.UserControl
(4)最后,在解决方案资源管理器中,将文件的扩展名从.aspx修改为.ascx,其代码后置文件会随之改变,从.aspx.cs改变为.ascx.cs。