1、第第2 2章章 模块模块1 1会员登录模块会员登录模块2.1 【任务任务1】创建简单的创建简单的Web应应用程序用程序2.2 【任务任务2】会员登录实现会员登录实现2.3 【任务任务3】会员登录状态管理会员登录状态管理【本章提要本章提要】会员登录是所有Web应用系统所必需的功能之一,本章以校园在线超市会员登录模块的实现为主线,实现了在VS2005中创建简单应用程序、会员登录模块实现和会员登录状态管理三个典型的任务。【学习目标学习目标】理解ASP.NET 2.0的工作模型。掌握应用程序配置方法。理解事件驱动编程模型。掌握HTML服务器控件和Web服务器控件的区别。掌握常用内置对象Response
2、和Request的使用。掌握Cookie对象的使用。任务描述任务描述熟悉Web应用程序所需的开发环境,并创建一个简单的Web应用程序,为校园在线超市系统创建雏形,并在首页中显示“欢迎来到校园在线超市”。2.1 【任务任务1】创建简单的创建简单的Web应用程序应用程序 必备知识必备知识知识1 ASP.NET 2.0工作模型ASP.NET是Web服务器(IIS)的ISAPI扩展。当IIS接收到客户端浏览器发来的请求后,它根据请求的文件类型确定由哪个ISAPI扩展来处理该请求,并将请求转发给ASP.NET。ASP.NET应用程序首先进行初始化,并装载配置模块,然后经过一系列步骤来完成对客户端请求的响
3、应。ASP.NET工作过程分为以下几个阶段。1阶段阶段1:用户从浏览器中请求网页:用户从浏览器中请求网页(.aspx)当IIS收到请求后,会对所请求文件的扩展名进行检查,确定应由哪个ISAPI扩展来处理该项请求,然后将该请求传递给合适的ISAPI扩展。也就是说,IIS将该项请求付给ASP.NET。2阶段阶段2:ASP.NET接收对应用程序的第一个接收对应用程序的第一个请求请求当ASP.NET接收到对应用程序中任何资源的第一个请求时,应用程序域管理器(ApplicationManager)将会创建一个应用程序域;在应用程序域中,将创建宿主环境(HostingEnvironment类的实例),它提
4、供对有关程序的信息(如存储该应用程序的文件夹的名称)的访问。3阶段阶段3:为每个请求创建:为每个请求创建ASP.NET核心对象核心对象创建了应用程序域并实例化了宿主环境之后,ASP.NET将创建并初始化核心对象,如HttpContext、HttpRequest和HttpResponse。HttpContext类包含特定于当前应用程序请求的对象,如HttpRequest和HttpResponse对象。HttpRequest对象包含有关当前请求的信息,包括Cookie和浏览器信息。HttpResponse对象包含发送到客户端的响应,包括所有呈现的输出和Cookie。4阶段阶段4:将:将HttpAp
5、plication对象分配给请求对象分配给请求初始化所有核心应用程序对象之后,将通过创建HttpApplication类的实例启动应用程序。如果应用程序具有Global.asax文件,则ASP.NET会创建Global.asax类(从HttpApplication类派生)的一个实例,并使用该派生类表示应用程序。同时,ASP.NET将创建所有已配置的模块(如状态管理模块、安全管理模块),在创建完所有已配置的模块后,将调用HttpApplication类的Init方法。图2-1说明了这种关系。图2-1 HttpApplication对象分配5阶段阶段5:由:由HttpApplication处理请求
6、处理请求在此阶段,将由HttpApplication类执行一系列的事件(如BeginRequest、ValidateRequest等),并根据所请求资源的文件扩展名(在应用程序的配置文件中映射)选择实现了HttpHandler的类来对请求进行处理。如果该请求针对从Page派生的对象,并且需要对该项页进行编译,则ASP.NET会在创建该页的实例之前对其进行编译,在装载后用该实例来处理这个请求,处理完后通过HttpResponse输出,最后释放该实例。知识2 使用VS 2005创建Web站点1VS 2005简介简介VS 2005(Visual Studio 2005)是一套完整的开发工具集,用于生
7、成ASP.NET Web应用程序、XML Web Services、桌面应用程序和移动应用程序。它提供统一的集成开发环境(IDE),可使用多种开发语言(Visual Basic、Visual C+、Visual C#和Visaul J#),这些语言利用了.NET Framework的功能,通过此框架可以简化ASP.NET Web应用程序和XML Web Services开发的关键技术。2VS 2005中中Web站点的类型站点的类型通过VS 2005可能创建和配置几种类型的Web应用程序(也称ASP.NET站点):文件系统站点、本地IIS站点、远程IIS站点和文件传输协议(FTP)站点。1)文件
8、系统站点VS 2005能够将站点的文件存储在本地硬盘上的一个文件夹中,或存储在局域网上的一个共享位置。使用该类型的站点具有以下优点:不希望或无法在自己的计算机上安装IIS。文件夹中已有一组Web文件,可将这些文件作为项目打开。文件存储在中心服务器上某一特定的文件夹中。在工作组设置中,工作组成员可访问中心服务器上的公共站点。使用该类型的站点的缺点是:不能使用基于HTTP的身份验证、应用程序池和ISAPI筛选器等IIS功能测试文件系统站点。2)本地IIS站点一个本地Internet信息服务(IIS)站点就是本地计算机上的一个IIS Web应用程序,VS 2005通过使用HTTP协议可与该站点通信。
9、使用该类型站点的优点是,可以用IIS测试站点,从而逼真地模拟站点在正式服务器中的情况。相对于使用文件系统站点,这更具有优势,因为路径将按照其在正式服务器上的方式进行解析。使用该类型的站点具有以下缺点:必须装有Internet信息服务。必须具有管理员权限才能创建或调试IIS站点。一次只有一个计算机用户可以调试IIS站点。默认情况下,为本地IIS站点启用了远程访问。3)远程IIS站点当要通过使用在远程计算机上运行的IIS创建站点时,可使用远程站点。远程计算机必须配置FrontPage服务器进行扩展,且在站点级别上启用它。使用该类型站点的优点如下:可以在部署站点的服务器上测试该站点。多个开发人员可以
10、同时使用同一远程站点。使用该类型的站点具有以下缺点:远程计算机上的IIS版本必须是5.0以上版本。针对调试远程站点的配置可能很复杂。一次只有一个开发人员可以调试远程站点,当开发人员单步调试代码时,所有其他请求均被挂起。4)文件传输协议站点当某一站点已位于配置为FTP服务器的远程计算机上时,可使用FTP部署的站点。使用该类型的站点可以在部署FTP站点的服务器上测试该站点。然而,该类型站点没有FTP部署的站点文件的本地副本,除非自己复制这些文件。另一方面,它不能创建FTP部署的站点,只能打开一个这样的站点。3VS 2005中中Web应用的结构应用的结构1)ASP.NET站点布局为了易于使用Web应
11、用程序,ASP.NET保留了某些可用于特定类型内容的文件和文件名称。右击“解决方案资源管理器”中的“项目”“添加ASP.NET文件夹”,可以根据项目需要添加特定类型内容的文件和文件夹,如图2-2所示。图2-2 解决方案资源管理器(1)默认页默认页是在用户定位到某一站点时,在没有指定页的情况下为用户显示的页,这将使用户容易地定位到一个站点。当创建Web应用程序的时候,默认创建一个名为Default.aspx的页,并将其保存在根目录中。(2)应用程序文件夹ASP.NET识别可用于特定类型内容的文件夹名称,以下列出了保留的文件夹名称以及文件夹中通常包含的文件类型。App_Browsers:包含浏览器
12、定义(.browser)文件。App_Code:包含作为应用程序一部分进行编译的实用工具类和业务对象的源代码或子文件夹。App_Data:包含应用程序数据文件,包括MDF文件、XML文件和其他数据存储文件。App_GlobalResources:包含编译到具有全局范围的程序集中的资源。App_LocalResources:包含与应用程序中的特定页、用户控件或母版页关联的资源。App_Themes:包含用于定义ASP.NET网页和控件外观的文件集合。App_WebReferences:包含用于定义在应用程序中使用的Web引用的文件、架构和发现文档文件。Bin:包含用户要在应用程序中引用的控件、组
13、件或其他代码的已编译程序集。2)站点文件类型站点应用程序中可以包含很多文件类型,某些文件类型由ASP.NET支持和管理(如.aspx、.ascx等),而其他文件类型则由IIS服务器支持和管理(如.html、.gif等)。表2-1列出了ASP.NET2.0中常用的文件类型及存储位置和说明。表2-1 ASP.NET2.0常用文件类型3)创建简单的Web应用程序ASP.NET应用程序即是Web应用程序,它包含了所有的文件、页面、处理程序、模块和可执行代码等。在编写程序之前,首先需要建立一个新网站。启动VS 2005开发环境,在文件菜单中选择“新建”“网站”,出现如图2-3所示窗口。选择已安装模板“A
14、SP.NET网站”,设置“位置”为“文件系统”,“语言”为“Visual C#”,单击“确定”按钮。创建新网站后的界面如图2-4所示。图2-3 新建ASP.NET应用程序对话框图2-4 Web窗体设计界面图2-4所示的解决方案资源管理器中,文件Default.aspx是应用程序的默认页,称为ASP.NET窗体或ASP.NET页面。每一个ASP.NET窗体均有两种编辑模式,即设计模式和代码模式。设计模式下,双击页面空白处,会出现一个Default.aspx.cs文件,这是C#代码文件,它所对应的类为Default.aspx页面文件的代码隐藏类。也就是说,任何一个ASP.NET窗体都由两个相关联的
15、文件组成,分别为页面文件和代码文件,这就是ASP.NET的代码分离(隐藏)技术。如果对Default.aspx文件,用右键快捷菜单在浏览器中查看时,将会是一个空白的页面。为了便于理解和比较,下面先看看与这个空白页面相关的两个文件的内容。Default.aspx文件的代码:第一个Web页这是一个HTML标记的页面代码。其中,第一行指明了与之关联的后台代码文件,后面将详细介绍;form标记的代码行中,runat为server时,标记为运行在服务器端,在后续编程过程中添加的Web服务器控件均置于标记中。Default.aspx.cs文件的代码:using System;using System.Da
16、ta;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default:System.Web.UI.Page protected void Page_Load(object sender,EventArgs e)/
17、在此处放置用户代码以初始化页面/页面加载时,执行此间代码 使用using指令导入的构建Web窗体所需要的命名空间,这使得命名空间中的内容在程序中可以直接引用,如命名空间System中包含了各种数据类型及基本的输入、输出指令等。代码:public partial class _Default:System.Web.UI.Page 声明名为_Default的类,该类继承于System.Web.UI命名空间下的Page类。知识3 Web窗体与Page类随着Web应用的不断发展,微软在.NET战略中,提出了全新的Web应用开发技术ASP.NET,引入了Web窗体的概念。窗体界面元素被称为Web控件,像
18、Windows窗体编程一样,将Web控件拖到窗体中进行可视化设计,可大大提高Web开发的效率。1Web窗体窗体Web窗体提供了一种直观方便的编程模型,它不仅可用于快速创建复杂的Web应用程序界面,而且可以实现功能复杂的业务逻辑和数据库访问。Web窗体是ASP.NET网页的主容器,它的页框架是可以在服务器上用于动态生成 Web 页的可缩放公共语言运行库的编程模型。Web窗体包含两种不同代码块的组合:含有页面布局和ASP.NET控件模板信息的HTML代码。它负责在浏览器上显示Web窗体,其扩展名为“.aspx”。对Web窗体进行逻辑处理的ASP.NET代码。它负责生成在Web窗体上显示的动态内容,
19、其扩展名为“.aspx.cs”。上述两种代码块就是ASP.NET代码分离编程模式下的界面文件和相应的后台代码文件。1)Web窗体的主要特点 基于Microsoft ASP.NET技术,在服务器上运行的代码动态生成界面,并将之发送到浏览器或客户端设备输出。兼容所有浏览器或移动设备。ASP.NET界面自动为样式、布局等功能呈现正确的、符合浏览器的HTML。此外,还可将ASP.NET界面设计为在特定浏览器上运行,并利用浏览器特定的功能。Web窗体页几乎可以输出任何支持客户端浏览的语言,包括HTML、XML和Script等。兼容.NET公共语言运行时(CLR)所支持的任何语言,包括C#、VB.NET和
20、Jscript.NET和J#。基于Microsoft.NET Framework生成,具有.NET Framework的所有优点,包括托管环境、类型安全性和继承。具有灵活性,可以添加用户创建的控件和第三方控件。2)ASP.NET界面语法ASP.NET界面文件的扩展名为.aspx,该类文件的语法结构主要由以下指令、Head、窗体元素、Web服务器控件或HTML控件、客户端脚本和服务器端脚本组成。(1)指令窗体文件通常包含一些指令,这些指令允许用户为该页指定属性和配置信息,它们不会作为发送到浏览器的标记的一部分被呈现。常见指令有以下几类:Page:页面指令,此指令最为常用,允许为页面指定多个配置选
21、项,常在Web窗体界面文件中的第一行使用,它定义了ASP.NET页分析器和编译器使用的页面特定属性,只能包含在.aspx文件中,如:各属性含义见表2-2。表2-2 Page指令的主要属性 Control:此指令允许指定ASP.NET用户控件。Register:此指令允许注册其他控件以便在页面上使用。Register指令声明控件的标记前缀和控件程序集的位置。如果要向页面添加用户控件或自定义ASP.NET控件,则必须使用此指令。Master:此指令使用于特定的母版页。OutputCache:此指令允许指定应缓存的页面,并指定以下参数,即何时缓存该页、缓存该页需要多长时间。(2)Head在Head中
22、的内容不会被显示(除标题外),但它们对于浏览器可能是非常有用的信息,如使用的HTML版本、脚本和样式表等内容。(3)Form(窗体)元素如果页面包含允许用户与页面交互并提交该页面的控件,则必须包含一个form元素。使用form元素必须遵循以下规则:页面只能包含一个form元素。form元素必须包含runat属性,其属性值设置为server时,允许在服务器代码中以编程方式引用页面上的窗体和控件。可执行回发的服务器控件必须位于form元素之内。开始标记不得包含action属性,ASP.NET可在处理页面时动态设置这些属性。下面是一个典型的标记:(4)Web服务器控件通常,在ASP.NET页中,都需
23、要添加允许用户与页面交互的控件,包括按钮、文本框、列表等。下面是Web服务器控件使用的示例:(5)将HTML控件作为服务器控件将普通的HTML控件作为服务器控件使用,可以通过将runat=server属性和ID属性添加到页面的任何HTML元素中。下面是HTML元素转换为服务器控件的示例:(6)客户端代码客户端代码是在浏览器中执行的,因此执行客户端代码不需要回发Web窗体。客户端代码语言支持JavaScript、VBScript、Jscript和ECMAScript。下面是客户端代码示例:function Button1_onClick()(7)服务器端代码服务器端代码是在服务器端执行的,页面代
24、码位于Script元素中,该元素中的开始标记包含runat=server属性。下面是服务端代码示例:private void Button1_Click(object sender,System.EventArgs e)3)Web窗体的生命周期一个Web窗体的生命周期类似于在服务器中运行的Web进程的生命周期。Web窗体从实例化分配内存空间到处理结束释放内存,一般经历四个步骤:初始化、页面装载、事件处理和资源清理。(1)页面初始化页面生命周期中的第一个阶段是初始化,其标志是Page_Init事件。当Init事件发生时,.aspx文件中声明的控件被实例化,并采用各自的默认值。(2)页面装载页面装
25、载在初始化之后进行,所发生的事件为Page_Load。它根据Page.IsPostBack属性检查页面是不是第一次被处理;第一次处理页面时执行数据绑定,或者在以后的循环过程中重新判断数据绑定表达式;读取或更新控件属性;恢复所保存的前一个客户请求的状态。(3)事件处理Web窗体上的每个动作都激活一个到达服务器的事件。一个Web窗体有两个视图:一个客户视图和一个服务器视图。所有的数据处理都在服务器上进行。当通过单击鼠标或其他方法触发一个事件时,事件就到达服务器并返回相应的数据。(4)资源清理发生于一个窗体完成了它的任务,并且准备卸载的时候,激活Page_Unload事件,以完成最后的资源清理工作,
26、如关闭文件、关闭数据库连接、释放对象等。2Page类类Page类与扩展名为.aspx的文件相关联,用作Web应用程序的用户界面的控件。这些文件在运行时被编译为Page对象,并被缓存在服务器的内存中。Page类有很多属性,在编程实践中,经常用到的Page对象的属性主要有IsPostBack和IsValid。1)IsPostBack属性IsPostBack属性用于获取一个布尔值,该值指示该页是否为首次加载。如果IsPostBack的值为true,则表示当前页面是由于客户端返回数据而加载的。新建一个Web窗体,添加一个按钮,并在Page_Load事件响应方法中添加如下代码,分别查看页面首次加载和单击
27、按钮的运行效果:private void Page_Load(object sender,System.EventArgs e)if(!IsPostBack)Response.Write(首次加载);else Response.Write(页面回送);2)IsValid属性获取一个布尔值,该值指示页面验证是否成功。在实际应用中,往往会验证页面提交的数据是否符合预期设定的格式要求等,如果所有符合则IsValid值为true,否则为false:private void Button1_Click(object sender,System.EventArgs e)if(IsValid)Respons
28、e.Write(页面验证通过);任务实现步骤1 选择“开始”“程序”“Microsoft Visual Studio 2005”,出现如图2-5所示的窗口。图2-5 Visual Studio 2005起始页窗口步骤2 单击“文件”“新建”“网站”,选择Visual Studio已安装的模板“ASP.NET网站”,设置“位置”为“文件系统”,“语言”为“Visual C#”,单击“确定”按钮。步骤3 单击解决方案中的Default.aspx页,切换到设计视图,输入文字“欢迎来到校园在线超市”,如图2-6所示。步骤4 单击菜单“调试”“启动调试”,如果程序没有错误,将在浏览器中打开Default
29、.aspx页面,如图2-7所示。图2-6 设置Default.aspx页面图2-7 浏览器中显示Default.aspx页面 任务描述任务描述在校园在线超市系统中,注册会员在登录页面输入用户名和密码,点击“确定”按钮后,将在另一个页面中显示:“,欢迎进入校园在线超市”提示信息,并显示用户的登录密码。2.2 【任务任务2】会员登录实现会员登录实现 必备知识必备知识知识1 事件驱动编程传统的程序一般按从上至下的顺序执行,即便使用的是函数,也不会改变程序的执行顺序。使用过ASP编程的程序员,对ASP的线性处理模型是有体验的,ASP页面也是按照从上到下的顺序处理的,其ASP代码和静态的HTML的每一行
30、都按其在文件中的显示顺序进行处理,在往返过程中通过用户操作将页面请求发送到服务器。然而,事件驱动编程这种模式改变了传统的编程模式。1事件驱动编程事件驱动编程事件是一对象发送消息通知另一对象操作的机制,可以用于对象间的同步和信息传递。Windows操作系统是由事件驱动的,它不以顺序方式执行。Windows启动后,就等待事件的发生。例如,当用户单击“开始”按钮时,就触发了“开始”按钮的单击事件。只要发生了事件,Windows就会执行相应的动作以处理该事件。如果单击了某一程序的菜单,则菜单会立即显示出来,然后等待用户的下一个操作。Windows是许多代码组的集合,每个代码组都是在事件调用时执行的。在
31、ASP.NET中,页面显示在浏览器上,等待用户交互。当用户单击按钮时就发生一个事件。程序会执行相应代码,以响应事件。在代码执行结束时,页面返回,继续等待下一个事件。事件驱动编程使ASP.NET编程更接近于Windows编程。开发者只需要编写响应事件的代码即可,并且可以将事件驱动编程的知识从Windows桌面应用程序扩展到Web应用程序上。事件驱动编程的另一个优点是可以使处理数据的代码与页面显示代码分离。ASP.NET允许开发者使用代码分离机制将Web应用程序逻辑(通常用C#和VB.NET开发)从表示层(通常是HTML格式)中分离出来。通过逻辑层和表示层的分离,ASP.NET允许多个页面使用相同
32、的代码,从而使维护更容易。开发者不需要为了修改一个编程逻辑问题而去浏览HTML代码,Web设计者也不必为了修正一个页面错误而通读所有代码。ASP.NET的事件可以分为以下几类:HTML事件:这些事件可以在页面上发生,并由浏览器在客户端处理,如在客户端JavaScript中运行的弹出工具提示或菜单扩展。自动触发事件:ASP.NET页面生成时,会自动触发一些事件,它们不需要干涉,在用户看到页面之前执行,使用这些事件可以建立页面。用户交互事件:用户与页面交互时触发的事件,这些事件直接与ASP.NET的Web控件相关,如Button控件的Click事件。2事件处理事件处理在现实生活中,委托别人办事的情
33、况时有发生,而委托别人办的事能不能办好,主要取决于以下两个方面:是否委托给了合适的委托对象。是否传递了解决委托事件所需要的正确和必要的信息。例如,经理委托他的秘书把A01项目策划案拿过来。这种委托就是成功的,因为经理委托秘书(委托对象合适),且明确要A01项目的策划案(正确和必要的信息传递)。ASP.NET的事件处理采用的就是一种委托机制,如按钮的Click事件,编程时在设计界面上双击按钮,程序会自动添加事件响应方法:protected void Button1_Click(object sender,EventArgs e)/事件处理代码 一般情况下,事件的响应方法中都有两个参数。一个参数代
34、表引发事件的对象sender,由于引发事件的对象是不可预知的,因此将其声明为Object类型(Object是所有对象的基类),适用于所有对象。另一个参数代表引发事件的具体信息,这在各种类型的事件中可能不同。第二个参数采用的EventArgs类型是事件数据类的基类,用于传递事件的细节。在编写程序时,如果使用方法,只需调用方法名称并传递相关参数。然而,事件的响应方法是怎样被关联的呢?下面的代码使Button1_Click事件响应方法和Click事件相关联:this.Button1.Click+=new System.EventHandler(this.Button1_Click);这里,Event
35、Handler就是一个委托声明,Button1_Click方法将被自动识别,并被关联到相应的事件上。知识知识2 Web控件控件通过任务一的学习,我们已经对Web窗体有了初步的了解。但是,当我们打开一个站点时,会看到页面中包含许多不同的元素,如图片、文本框、按钮或是超链接等,这些元素统称为控件。控件是一个可重用的组件或者对象,它不但有自己的外观,还有自己的属性和方法,其中大部分控件还可以响应特定的事件。通过VS 2005的集成开发环境,可以简单地把一个控件拖放到一个Web窗体中。为什么会有HTML服务器控件和Web服务器控件之分呢?这是因为一些控件是在服务器端存在的。服务器端控件有自己的外观,在
36、客户端浏览器中服务器控件的外观由HTML代码来表现。服务器控件会在初始化时,根据客户的浏览器版本,自动生成适合浏览器的HTML代码。1HTML服务器控件服务器控件所有的Html服务器控件位于System.Web.UI.HtmlControls命名空间中,从HtmlControl基类中直接或间接派生出来。HTML服务器控件与XHTML表单元素密切相关。然而HTML服务器控件可以与服务器端程序代码交互,这些交互包括服务器端程序代码可以动态地改变HTML控件的显示和功能。1)HTML服务器控件的类型最常用的HTML服务器控件相关类的说明如表2-3所示。表2-3 常用HTML控件及其类别2)HTML服
37、务器控件常用属性(1)InnerHtml和InnerText属性使用InnerHtml属性以编程方式修改HTML服务器控件的开始和结束标记中的内容。InnerHtml属性不自动对进出HTML实体的特殊字符进行编码。HTML实体允许显示特殊字符(如“”字符),浏览器通常会将这些字符解释为具有特殊含义。字符会被解释为标志的开头,并且不会在页面上显示。若要显示字符,将需要使用实体<。使用InnerText属性以编程方式修改HTML服务器控件的开始和结束标记之间的内容。与InnerHtml属性不同,InnerText属性自动对进出HTML实体的特殊字符进行编码。(2)Disabled属性Disab
38、led属性被称为禁止功能。禁止功能就是将一个对象的功能关闭,让对象暂时无法执行工作。所以,如果将对象的Disabled属性设为True时,该对象会显示为灰色,并且停止工作。只有将Disabled属性设回False,该控件才能正常工作。以Button对象为例,若该对象的Disabled属性被设定为True,则按钮无法被按下。(3)Visible属性通过该属性可以显示或隐藏控件。(4)Attributes属性有两个方法可以指定对象的属性,第一种是“对象.属性”的方式,另一种则是通过“对象.Attrbutes(属性名称)”来设置或获取属性。(5)Style属性该属性可以用来设定控件的样式。表2-4列
39、出了Style属性可以设定的样式。表2-4 Style属性样式说明3)将HTML控件转换成HTML服务器控件默认情况下,服务器无法使用ASP.NET页面上的HTML元素,这些元素被视为传递给浏览器的不透明文本。但是,通过将HTML元素转换成HTML服务器控件,可以将它们公开为可以在基于服务器的代码中进行编程的元素。通过添加runat=server属性表明应将HTML元素作为服务器控件进行处理,再设置元素的id属性,这样就可以通过编程的方式引用控件。然后通过设置属性(Attribute)来声明服务器控件实例上的属性(Property)参数和事件绑定等。代码示例如下:在上面的代码示例中,通过设置i
40、d和runat=server属性,将文本框和按钮这两个HTML控件转换成HTML服务器控件,这样就可以在服务器端直接访问它们的属性。【例2-1】为HTML控件Button1添加服务器端单击事件,直接读取Text1控件的值,并输出到页面。代码如下:protected void Button1_OnClick(object sender,EventArgs e)Response.Write(Text1.Value);无标题页 运行【例2-1】的代码,在“Text1”文本框中输入“你好,欢迎进入ASP.NET世界!”后,单击“Button1”按钮,页面提交,并在页面上输出文本框内容。2Web服务器控
41、件服务器控件ASP.NET Web服务器控件是ASP.NET网页上的对象,参与页面的执行过程,并在客户端生成相应标记。在ASP.NET 2.0中,Web服务器控件是指在服务器上执行程序逻辑的对象,包含自己的属性、事件和方法,当访问ASP.NET网页时运行对象,并调用对应的方法。1)Web服务器的特性Web服务器控件与HTML服务器控件相比,其设计侧重点不同。它并不一对一地映射到HTML服务器控件,其中包括传统的表单控件,如TextBox和Button,以及其他更高抽象级别的控件,如Calendar和DataGrid控件。它们提供了一些能够简化开发工作的特性,其中包括:丰富而一致的对象模型。We
42、bControl基类实现了对所有控件通用的属性,这些属性包括ForeColor、BackColor、Font、Enabled等。属性和方法的名称是经过精心挑选的,以提高在整个框架和该组控件中的一致性。通过这些组件实现的具有明确类型的对象模型将有助于减少编程错误。对浏览器的自动检测:Web控件能够自动检测客户机浏览器的功能,并相应地调整它们所提交的HTML,从而充分发挥浏览器的功能。数据绑定:在Web窗体页面中,可以对控件的任何属性进行数据绑定。此外,还有几种Web控件可以用来提交数据源的内容。在HTML标记中,Web控件会表示为具有命名空间的标记,即带有前缀的标记。前缀用于将标记映射到运行时组
43、件的命名空间。标记的其余部分是运行时类自身的名称。与HTML控件相似,这些标记也必须包含runat=server属性。下面是一个声明的示例:其中,asp是标记前缀,会映射到System.Web.UI.WebControls命名空间。2)基本的Web服务器控件ASP.NET中大致将Web服务器控件分成六大类:标准控件、数据控件、数据源控件、验证控件、导航控件和登录控件。任何一个应用系统都包括输入、输出和处理部分,而输入和输出对用户来说是接触最多也最为关心的部分。在Web服务器控件中,最基本的两个控件是Label和TextBox,它们完成了文本信息的接收输入和显示输出的工作,而另一个常用控件But
44、ton 则负责完成与用户的交互,并在事件处理过程中完成系统的处理工作。(1)Label控件Label控件是一个最简单的控件,它主要用来以编程方式显示Web页中的文本。当需要使用程序来改变其显示的文字时,只需要改变它的Text属性即可。Label控件常用的属性有以下三个:Text:指定Label控件显示的文字。ForeColor:指定Label控件显示文字的颜色。Font:指定Label控件显示文字的字体属性,包括字体名称、大小等。Label控件的HTML标签:或 用户名:设置和获取Label控件的Text属性值的方式:string username=Label1.Text;/取值Label1.
45、Text=username;/设置(2)TextBox控件在交互式网页中,TextBox是最常用的控件之一,用于用户输入文本或编辑文本,并能实现单行、多行、密码的显示格式。常用属性有:Text:给出或设置控件中的文本。TextMode:给出或设置控件的类型,其中SingleLine为单行文本框,Multiline为多行文本框,Password为密码框,默认值为SingleLine。ReadOnly:给出或设置控件内容的只读性。Wrap:给出或设置控件内容超过控件宽度时,是否自动换行。AutoPostBack:给出或设置当控件失去焦点,且内容已经改变时,是否发回服务器。OnTextChanged
46、:指定控件内容发生改变时,所触发的事件名称。TextBox控件的HTML标签:设置和获取名为ContrUserName的TextBox控件的Text属性值的方式:string username=ContrUserName.Text;/取值ContrUserName.Text=username;/设置设置ID为ContrUserPwd文本框的密码框的方式:ContrUserPwd.TextMode=Password;(3)CheckBox控件在日常信息输入中,我们会遇到这样的情况,输入的信息只有两种可能性(如性别为男或女,婚否之类),如果采用文本输入,则一是输入繁琐,二是无法对输入信息的有效性进
47、行控制。这时如果采用复选控件(CheckBox),就会大大减轻数据输入人员的负担,同时输入数据的规范性也得到了保证。其HTML标签如下:CheckBox的常用属性有:Checked:给出或设置控件的选择状态,为True代表选中,为False为未选中。AutoPostBack:给出或设置当控件失去焦点,且状态改变时,是否发回服务器。当CheckBox控件的状态在向服务器发送过程间更改时,将引发CheckedChanged事件。可以为CheckedChanged事件提供事件处理程序,以便在向服务器的各次发送过程中,CheckBox控件的状态发生改变时执行特定的任务。当创建多个CheckBox控件时
48、,还可以使用CheckBoxList控件。对于使用数据绑定创建一组复选框而言,CheckBoxList控件更易于使用(我们将在后面的章节中为大家介绍),而各个CheckBox控件则可以更好地控制布局。默认情况下,CheckBox控件在被单击时不会自动向服务器发送窗体。若要启用自动发送,应将AutoPostBack属性设置为true。下例显示了如何使用CheckBox控件。【例2-2】CheckBox的使用。设置CheckBox1的AutoPostBack属性为true,并编写CheckBox1的CheckedChanged事件代码如下:protected void CheckBox1_Chec
49、kedChanged(object sender,EventArgs e)TextBox2.Text=TextBox1.Text;当选中“同联系人”复选框时,运行结果如图2-8所示。图2-8 CheckBox的使用(4)Button控件Button控件允许在Web窗体上创建普通按钮。Button控件的HTML标签如下:设置Button控件的Text属性值的方式:Button1.Text=确定;当用户单击按钮时触发按钮的Click事件,可以在其事件处理过程中完成页面的提交以及事务处理。Click事件处理方法:protected void Button1_Click(object sender,E
50、ventArgs e)/事件处理代码可以为Click事件提供事件处理程序,在事件处理程序中可以通过编程的方式控制单击Button按钮时执行的操作。添加属性:private void Page_Load(object sender,System.EventArgs e)Button1.Attributes.Add(OnClick,javascript:return confirm(确定吗?););上述代码在页面装载事件中,给按钮添加了属性。当按钮被单击时,首先弹出一个“确认”对话框供用户选择。对于重要的操作,如保存、删除等,这种友好的提示是必要的。【例2-3】Button控件的使用,如图2-9所