Visual C#.NET Web应用程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

本章内容

◆ 了解和使用各种服务器控件

◆ 深入体会服务器控件带来的软件编程思想

◆ 使用验证控件确保输入数据的正确性

◆ 使用导航控件方便地创建导航系统

◆ 使用用户控件减少代码,提高程序的重用性

本章重点

◆ ASP.NET 3.5中的各种服务器控件

◆ 验证控件

◆ 导航控件

◆ 用户控件

第4章 ASP.NET 服务器控件

4.1 服务器控件概述

本章将主要介绍服务器控件的基本知识,以及HTML服务器控件、标准控件、验证控件、导航控件和用户控件的编程知识。

4.1.1 服务器控件的基本知识

Web窗体是一个容器类对象,由代码、标记、正文文本和服务器控件构成。服务器根据页面请求,结合所有控件的输出,生成正确的HTML标记语言并向客户提供在浏览器中显示的页面。在ASP.NET页面元素中,除了HTML标记外,所有控件实际上是在服务器端运行的,因此将这些控件称为服务器控件。所有的服务器控件都必须放在<form runat="server">与</form>标记之间。

服务器控件编程的关键是runat属性,如果一个控件没有使用runat="server"属性进行声明,则该控件被认为是纯文本,并按照其先后顺序输出。如果使用了runat="server"属性进行声明,ASP.NET在服务器上处理页面时就会生成该控件的一个实例,该控件对象实例的属性方法对程序员是透明的。每个服务器控件都有一个唯一的ID名称和一些属性、方法,以便在服务器端代码中被引用。ASP.NET提供了两大类服务器控件,即HTML服务器控件和Web服务器控件。HTML服务器控件与HTML标记一一对应,在每一个HTML标记属性中添加runat="server"属性就变成了HTML服务器控件。Web服务器控件不与HTML标记对应,ASP.NET 3.5提供了丰富的Web服务器控件,包括标准控件、验证控件、导航控件、登录控件等类型。

4.1.2 服务器控件的事件模型

第3章介绍了事件驱动的Web程序设计模型,Web窗体的处理过程及页面事件,ASP.NET除了Web窗体的页面事件以外,还有HTML事件、服务器控件事件等。

HTML事件在客户端浏览器上触发,也由浏览器响应,内置于浏览器的解释器会执行该事件的处理程序,不会将该事件传至服务器,这样就可以减轻服务器的负担。客户端的事件处理程序可以用JavaScript或VBScript语言编写。HTML元素可以响应的事件主要有onMouseUp、onMouseDown、onMouseOver、onMouseMove、onClick、onDblClick、onKeyUp、onKeyPress、onKeyDown等。ASP.NET的某些服务控件会自动生成一部分客户端代码,用来响应客户端的HTML事件。

服务器控件事件在客户端浏览器上触发,在服务器端执行事件处理代码,可以利用服务器所有的资源,可以用多种语言,如C#、VB等.NET支持的语言编写事件处理代码。HTML事件与服务器控件事件的最大不同是它们处理事件的方法,前者是在客户端浏览器中处理,而后者是在服务器端中处理。对于服务器控件,事件在客户端浏览器上触发,但浏览器并不处理它,客户端要给服务器发送一个回传信息,告诉服务器处理该事件。为了减轻服务器的负担,有些频繁发生的事件适合在客户端浏览器中处理,如onMouseOver事件就不会回传至服务器处理。

4.1.3 HTML服务器控件

(1)在Web窗体中添加HTML服务器控件。在Web窗体中添加HTML服务器控件,只须在工具箱中选择“HTML”选项卡,将所需的控件拖到页面中适当的位置即可。默认情况下,Web窗体页上的HTML标记是普通的客户端表单标记,遵循HTML标准编程,不能被服务器使用。如果要使HTML标记能够在服务器上运行有两种方法,最简单的一种方法就是在“设计”视图中右击该控件,在弹出的快捷菜单中选择“作为服务器控件运行”选项;另一种方法是在“源”视图中,在HTML标记中加入属性runat="server",这样就可以将HTML标记转换为HTML服务器控件。每个HTML服务器控件都是一个对象,它们拥有属性、方法和事件,这些属性、方法能够使它们在服务器上使用,并进行程序设计。用户输入HTML服务器控件中的值可以高速缓存,并自动维护控件的视图状态。

(2)常用的HTML服务器控件。常用的HTML服务器控件及其说明如表4.1所示。

表4.1 常用的HTML服务器控件及其说明

(3)HTML服务器控件的公有属性、方法和事件。HTML服务器控件都是System.Web. UI.HtmlControl类的派生类,所以它们具有公有的属性、方法和事件。此外,每一个控件又有自己特有的属性和事件。HTML控件提供的属性可以在服务器端编写代码来操作,支持回传事件和客户端脚本编写,例如,单击一个按钮,既可以在客户端编写运行响应代码,也可以回传事件在服务器端编写代码来处理。

HtmlControl类继承于Control类,定义所有HTML服务器控件公有的属性、方法和事件。HTML服务器控件的公有属性、方法和事件如表4.2所示。

表4.2 HTML服务器控件的公有属性、方法和事件

提示:读者在学习HTML服务器控件时,要借用静态网页制作技术,特别是HTML元素的知识。重点掌握常用的几个HTML控件的一般用法,其他控件的详细属性、方法和事件可以通过相关技术手册查询,这样读者就可以达到举一反三的目的。