3.1 服务器控件基础
HTML中也有控件的概念,并实现指定的应用。但服务器控件拥有更好的数据处理方法和响应事件,实现更为复杂的功能。本节介绍服务器控件的基础知识,包括服务器控件概述、分类和公共属性等。
3.1.1 服务器控件概述
服务器控件是需要在服务器端响应的控件。与HTML控件相比,服务器控件有着更为便利的处理数据的方法和与用户交互的响应事件。
例如,服务器控件又有数据的回送功能,在页面刷新或关闭时回送数据,以确保重要的数据被记录下来。除此之外,服务器控件还有以下几个特点。
(1)服务器控件可以触发服务器控件特有的事件。
(2)输入到服务器控件中的数据在请求之间可以维护(即具有状态管理功能)。
(3)服务器控件可以自动检测浏览器并调整到恰当的显示。
(4)每个服务器控件都具有一组属性,可以在服务器端的代码中更改控件的外观和行为。
ASP.NET服务器控件可以自动检测客户端浏览器的类型,产生一个或者多个适当的HTML控件,并且自动调整成适合浏览器的输出。服务器控件支持数据绑定技术,可以和数据源进行连接,用来显示或修改数据源数据。其优点如下所示。
(1)使制造商和开发人员能够生成容易的工具或者自动生成用户的应用程序接口。
(2)简化创建交互式Web窗体的过程。
将服务器控件添加到Web窗体中非常简单,最常用的方法有三种,如下所示。
(1)从工具箱中拖动控件到窗体上或直接双击控件进行添加。
(2)在资源视图中,直接添加控件的声明代码。
(3)以编程方式动态创建Web服务器控件。
注意
所有的ASP.NET控件必须定义在.aspx(ASP.NET页面文件)文件中,如果是采用代码隐藏技术设计的程序,其事件程序一般定义在代码文件(如.cs或.vb)中。
3.1.2 服务器控件分类
服务器控件种类繁多,根据控件所实现的作用可将控件分为标准控件、数据控件、验证控件、导航控件和登录控件,对其介绍如下。
1.标准控件
标准控件是所有控件中最为常用的,有按钮控件、文本控件、复选框控件和容器控件等。而仅文本相关的控件就有文本输入框、文本显示标签和链接文本等控件。根据控件的样式可以将标准控件分为文本控件、按钮控件、选择控件、列表控件和容器控件。
2.数据控件
数据控件主要用于数据的处理,包括数据的绑定和显示。ASP.NET页面中的数据通常是动态数据,需要不断变化。这些数据被存放在数据源文件中,数据显示控件在绑定了数据源之后,所显示的数据会随着数据源数据的变化而变化。
除此之外,数据控件也可以操作数据源中的数据。ASP.NET页面通常与数据库结合,以数据库作为数据源来存储数据。数据控件的使用将在第10章中介绍。
3.验证控件
网站通常是需要与用户“交流”的,如用户在登录时需要提供用户名和密码、在查询时需要提供查询关键字、在注册的时候需要提交基本信息等。
用户与网站之间的“交流”表现在信息的输入输出方面,但是在大多情况下,网站对用户的输入格式会有限制,如用户注册时的邮箱地址不合法,将直接影响用户的注册。为了确保用户输入的格式符合网站需求,服务器控件中提供了验证控件对用户的输入进行验证,只有通过了验证的输入才能被网站接收处理。
验证控件通常与输入文本框进行绑定,以验证用户的输入是否有效。验证控件将在第8章中介绍。
4.导航控件
导航控件与网站用户的关系,相当于导游和旅行者的关系。导航控件能够将大型的网站系统结构化,列出网页之间的逻辑关系,使用和能够方便快捷地找到所需的页面进行访问。导航控件通常和站点地图等列举页面逻辑的文件结合使用,在第6章中将详细介绍。
5.登录控件
用户登录通常需要输入用户名、密码,并由网站对用户名和密码的合法性进行验证,在验证无误的情况下提交信息。
由于登录功能是网站的常用功能,因此ASP.NET将登录常用的控件定义为一个组合,可直接从工具箱拉入页面使用。
登录控件通常包含【用户名】文本框、【密码】文本框等关于登录的常见控件。登录控件的使用减轻了开发人员的工作。
3.1.3 服务器控件公共属性
ASP.NET服务器控件有多种类型,但这些控件有着它们共同的特点和属性。每一个Web服务器控件都有一个<asp:>的前缀,该前缀表示此控件为Web服务器控件。其语法格式如下。
<asp:Control id="name" runat="server" />
上述语法中,id表示控件的唯一标识,runat属性指示该控件为服务器控件,这两个属性的含义与HTML控件中相应的属性的含义一致。例如,下面的代码表示在ASP.NET页面中添加一个Label控件。
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
ASP.NET中的服务器控件继承自System.Web.UI.WebControls类,该类提供了大多数Web服务器控件的公共属性、方法和事件。如表3-1所示对服务器控件的最常用的一些属性进行了说明。
表3-1 服务器控件的常用属性
除了表3-1中的内容,服务器控件都有runat="server"属性值,以区分服务器控件和HTML控件。设置控件的属性时有以下两种方法。
(1)在设计时通过【属性】窗格设置控件的属性。
(2)在运行时以编程方式动态设计控件的属性。
服务器控件是显示在页面中与用户进行交互的,因此控件通常能够因为用户的操作而触发某些事件的执行。如用户单击按钮,那么按钮的鼠标单击事件将被执行;用户修改文本框中的内容,那么若该文本框定义了修改事件,该事件将被执行。
事件是一种在满足某种条件(如鼠标单击)后开始运行的程序,大部分的ASP.NET控件都可以引发服务器端事件完成某些功能,页面事件是在页面加载时和撤销时所引发的事件。
页面级别的事件主要有三种:Page_Load、Page_Init和Page_Unload。Page_Init事件和Page_Load事件都是在页面加载时引发并用来执行初始化程序的事件,前者只是在页面第一次加载时执行的事件,而Page_Load事件在每次加载时都执行。Page_Unload事件执行最后的清理工作,例如关闭打开的文件和数据库连接等。
向ASP.NET服务器控件添加客户端事件时有三种方法,如下所示。
(1)以声明方式向ASP.NET服务器控件添加客户端事件处理程序,即在资源视图中直接为控件添加事件属性,如onmouseover或onclick等。添加事件属性时需要针对不同的属性添加要执行的客户端脚本。
(2)以编程方式向ASP.NET控件添加客户端事件处理程序,即在页面的Init或Load事件中调用控件的Attributes集合的Add()方法来动态添加客户端事件处理程序。
(3)向按钮控件添加客户端onclick事件。例如,在按钮控件(Button、LinkButton和ImageButton)中要添加客户端onclick事件,可以在设计视图中将按钮控件的onclientclick属性设置为要执行的客户端脚本,也可以在源视图中直接添加该属性。