《ASPNET开发环境课件汇总全书电子教案完整版课件(最新).ppt》由会员分享,可在线阅读,更多相关《ASPNET开发环境课件汇总全书电子教案完整版课件(最新).ppt(428页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ASP.NET开发环境第1章第一章 ASP.NET开发环境首先对Web基础知识有些初步了解;在此基础上,学习、掌握ASP.NET开发环境的安装、配置、测试方法,并利用VisualStudio2017开发环境创建一个动态网站。通过本章内容的学习,读者可以达到以下学习目的:了解Web系统三层结构的含义。掌握IIS、Framework和VisualStudio2017的安装方法。掌握ASP.NET网站开发环境的配置方法。了解ASP.NET网站页面处理过程。掌握利用VS2017创建网站的方法。第一章 ASP.NET开发环境通过对本章内容的学习,读者可以掌握ASP.NET网站环境设置的相关知识,并能够成
2、功创建一个能够动态显示用户登录信息的ASP.NET网页(根据用户输入的不同用户名,动态显示用户信息),效果如图1-1所示。1.2.1 C/S结构和B/S结构C/S(Client/Server,客户端/服务器)结构是软件系统的一种常见体系结构,它可以充分利用Client端和Server端的硬件条件优势,将任务合理地分配到客户端和服务器端来完成,从而达到有效降低系统通信开销的目的。目前,大多数应用软件开发都是C/S形式的两层结构来实现的,未来的应用软件也正在向分布式Web应用发展。由于Web和C/S应用都可以进行同样的业务处理,只是应用了不同的模块共享逻辑组件。因此,内部的和外部的用户都可以访问新
3、的和已有的应用程序,通过现有应用系统中的逻辑扩展出新的应用系统,这也是未来应用系统的一个发展方向。1.2.1 C/S结构和B/S结构B/S(Browser/Server,浏览器/服务器)结构是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面通过WWW浏览器来实现,极少部分事务逻辑在前端浏览器(Browser)实现,而主要事务逻辑集中在服务器端(Server)实现,形成三层结构。这样就大大减轻了客户端计算机的负担,减轻了系统维护与升级的成本和工作量,客户端只需要安装浏览器,就可以完成相应的操作。1.2.1 C/S结构和B/S结构相比较而言,C/S结
4、构是建立在局域网基础上的,而B/S结构则主要是建立于广域网基础上的。以目前的网络发展和开发技术来看,采用B/S结构通过Internet/Intranet模式进行数据库访问的网络应用,能够实现不同接入方式(如LAN、WAN、Internet/Intranet等)访问和操作,在系统开发难易程度和数据库安全,以及系统的后期维护等多个方面,都具有显著优势,从而被广大软件开发人员所青睐。1.2.2 Web系统三层架构Web系统的三层架构,指的是将系统的整个业务应用划分为表示层、业务逻辑层和数据访问层,如图1-2所示。架构中的层与层之间相互独立,任何一层的改变都不影响其它层的功能,从而能够有利于系统的开发
5、、维护、部署和后期扩展。(1)表示层:负责直接与用户进行交互,一般是指系统界面,用于数据输入和结果显示等,完成人机之间的交互。(2)业务逻辑层:主要负责系统数据有效性的验证工作,以便更好地保证程序运行的健壮性,如数据输入的格式、值域范围验证等。(3)数据访问层:负责完成对后台数据库的数据操作,如执行数据的添加、修改和删除等命令。1.2.3 ASP.NET工作原理客户端通过浏览器向Web服务器发送访问请求,然后Web服务器再向数据库服务器提出操作请求,数据库服务器根据请求对数据进行相应的数据处理,再把数据处理结果返回到Web服务器,Web服务器将最终结果显示到客户端浏览器。此过程是典型的动态网页
6、工作原理。1.2.3 ASP.NET工作原理使用MSIL具有以下3个方面的好处。(1)通过JIT(JustInTime)编译器将MSIL编译成机器码,由于不同的计算机系统支持不同的JIT编译器,因此将相同的MSIL通过不同的JIT编译器编译后,便能实现MSIL的跨平台运行。(2)采用MSIL实现了.NET框架对多种程序语言的支持,因为任何可编译成MSIL的程序语言,都可以被.NET应用程序所使用,如常见的C#、VB等。(3)ASP.NET程序在第一次被访问时,程序先被编译成MSIL,再被调用执行。相对于ASP程序而言,该处理时间似乎变得更长。然而,当ASP.NET程序被再次调用时,系统将直接把
7、MSIL编译后执行,其执行速度要明显快于ASP程序。由此一来,程序的总体执行效率得到了大幅度地提高。1.3.1 ASP.NET的运行环境(1)操作系统。Windows7SP1、WindowsServer2012R2及其以上等各版本。考虑到Windows7作为当前教育系统主流操作系统,本书采用Windows7专业版操作系统进行介绍,其它版本的操作系统与之类似。(2)服务器软件。IIS6.1、.NETFramework4.6、MicrosoftDataAccessComponents,或者此版本以上的高级软件版本。本书主要采用的是IIS6.1,.NETFrameworkV4.5和MDAC2.6版本
8、。(3)客户端软件。本书主要采用谷歌浏览器Chrome70.0版本进行演示,为了获得更好的网页浏览效果,建议读者采用主流的高版本浏览器,如谷歌浏览器Chrome、微软Edge浏览器和火狐浏览器Firefox等。1.3.2 安装IIS服务IIS(InternetInformationServices)是微软MicrosoftWindows平台集成的重要Web技术。它的可靠性、安全性和可扩展性都表现得非常出色,能够很好地同时支持多个Web站点,是微软公司主推的Web服务器。IIS为用户提供了简捷的方式共享信息,建立和部署企业应用程序,建立和管理Web网站。借助于IIS,用户可以轻松地完成测试、发布
9、、应用和管理Web页面和Web站点。1.3.2 安装IIS服务1.3.2 安装IIS服务1.3.3 安装.NET Framework1.3.4 测试ASP.NET环境【例1-1】使用记事本创建第一个ASP.NET程序(Ex01.aspx)。把文件保存为Ex01.aspx(.aspx是ASP.NET网页文件的扩展名),并移动“C:inetpubwwwroot”目录下(该目录为IIS信息服务默认站点的保存位置)。然后启动浏览器,在地址栏里输入http:/localhost/Ex01.aspx,按Enter回车键确认。启动上述网页文件。1.3.4 测试ASP.NET环境1.3.5 安装Visual
10、StudioVS2017社区版安装时,要求系统必须安装有.NETFramework4.6以上版本软件作为基础,所以用户要事先安装.NETFramework4.6,安装方法前面已经进行了介绍。(1)用户可以访问微软官方网站https:/ 安装Visual Studio1.4 初识Visual Studio 20171.4.2 创建ASP.NET网站【例1-2】使用VS2017创建管理方案,并在该管理方案下创建一个ASP.NET网站。(1)启动VS2017程序,依次执行“文件”“新建”“项目”命令,打开“新建项目”对话框,如图1-16所示。1.4.2 创建ASP.NET网站(3)项目创建完成后,V
11、S2017会自动打开该项目。用户可以通过右击“解决方案资源管理器”窗口的“解决方案MyBooks”,依次执行快捷菜单中的“添加”“新建项目”命令,打开“添加新项目”对话框,如图1-17所示。1.4.3 创建Web页面【例1-3】在Example网站中创建Default页面,实现在文本框中输入用户姓名,单击“查看效果”按钮后,用户姓名动态地添加到欢迎语句(Default.aspx)。1.5.1 IIS创建网站【例1-4】在IIS中创建网站,实现脱离VS2017软件环境浏览。1.5.1 IIS创建网站1.5.1 IIS创建网站1.5.2 页面处理过程在页面生命周期的每个阶段都可以引发一些事件,事件
12、被引发时会执行相应的事件处理代码。同时,页面还支持自动事件连接,即ASP.NET将寻找具有特定名称的方法,并在引发特定事件时自动运行这些方法。例如,将Page指令的AutoEventWireup属性设置为True,页面事件将自动绑定至使用Page_Event命名约定的事件,如页面加载事件Page_Load和页面初始化事件Page_Init。事件名称说明Page_PreInit事件网页生命周期中最早期引发的一个事件。常用于动态设置主题、母版页和创建动态控件Page_Load事件页面加载时引发该事件,并以递归方式对页面中的每个控件元素执行加载操作控件事件用户自定义的控件事件,如Button的Cli
13、ck事件、TextBox的TextChanged事件等Page_Unload事件该事件首先针对每个控件发生,继而针对页面发生。完成页面呈现后,程序完成后的清理工作,如断开数据库连接、删除对象和关闭文件等1.5.2 页面处理过程【例1-5】利用页面IsPostBack属性判断网页是否为第一次加载(Ex1-2.aspx)。1.5.2 页面处理过程protectedvoidPage_Load(objectsender,EventArgse)if(!IsPostBack)Response.Write(页面是第一次加载。);elseResponse.Write(注意,页面已经不是第一次加载了!);C#编
14、程基础第2章C#编程基础通过本章知识的学习,读者首先了解C#、.NETFramework基础知识和C#编程规范,掌握常见数据类型、变量和运算符基础知识,以及在此基础上掌握顺序、选择和循环结构等流程控制,并利用本章知识设计和实现网站管理员登录页面。通过本章内容的学习,读者可以达到以下学习目的:n了解C#和.NETFramework基础知识。n了解C#常见数据类型、常量、变量和运算符,以及编程规范知识。n掌握顺序、选择和循环等流程控制结构的编程方法。n掌握自定义操作类的使用方法。n掌握随机数获取和使用方法。2.1 情景分析网站管理员登录界面包含用户名、密码和随机校验码3项内容。首先,页面对用户输入
15、的校验码进行核对,只有校验码输入正确时才可以进行管理员身份验证。其次,判断用户名和密码是否正确,然后登陆后台管理页面。2.2 C#基础C#语言是一种面向对象编程语言,是为开发.NET框架上的程序而设计的,不仅适用于Web应用程序开发,也适用于Windows应用程序开发,主要具备以下特点。n安全性高。C#代码是在.NETFramework提供的环境下运行的,并不直接操作内存,从而增强了安全性。n程序健壮性强。使用C#编程能够实现垃圾自动回收,即将不再使用的对象从内存中清除。同时,C#异常处理功能提供了结构化和可扩展的错误检测和恢复方法,能够很好的提高程序健壮性。n类型统一。所有的C#类型都继承于
16、根类型Object,共享一组通用操作。n编程简易。C#完成支持组件编程,即C#可以将包含和自描述功能的软件组件,通过属性、方法和事件来提供编程模型,进行调用进行直接使用,从而大幅度降低了编程的难度。2.NET Framework命名空间.NETFramework提供了多种类,用于对系统功能的访问,这些类是建立应用程序、组件和控件的基础。在.NETFramework中,组织这些类的方式称为命名空间。在ASP.NET网站中使用命名空间时,要采用using语句来实现,如“usingSystem;”表示导入System命名空间。编程时,对已导入的命名空间所包含的类进行操作时,可以省略命名空间部分代码。
17、如在没有导入System命名空间时,“stringstrcall=”Hello”;”会出现编译错误,这是因为string属于System命名空间中的对象,需要对命名空间进行事先引用,即“usingSystem;”。3编程规范规范程序编写代码,有助于提高程序的可读写和可维护性。用户在编写代码时,可以借助于XML文档注释方法(如单行代码注释采用“/注释内容”,多行代码注释采用“/*注释内容*/”)提高程序可读性。用户在撰写代码时要注意变量和控件的命名,也要尽可能采用“见名知义”的命名方法。命名通常要考虑字母大小写规则,常见的命名方法有Pascal(帕斯卡)命名法和Camel(骆驼式)命名法。其中,
18、Pascal命名法采用每个单词首字母大写,Camel命名法采用第一个单词首字母小写,其余单词首字母大写。为了能够更好的编写程序代码,下面给大家一些参考建议。定义常量时,常量名称全部采用大写字母(如PI)。定义变量名称时,变量名不得采用单个字符(如i),局部变量除外。定义变量名称时,可以采用“变量类型缩写+英文描述”形式表示(如strMail)。定义控件名称时,可以采用“控件名缩写+英文描述”形式表示(如txtName)。2.3 常量与变量常量是指在程序运行过程中,其值不能被改变的量。合理使用常量,可以增加程序的可读写和易维护性。声明一个常量,必须使用const关键字,同时对其初始化。常量的数据
19、类型可以是数值类型和引用类型,常量的访问修饰符有public、private等。【例2-1】定义一个常量PI,根据输入的半径值,计算圆形的面积。protectedvoidButton1_Click(objectsender,EventArgse)doubleradii=Convert.ToDouble(txtRadii.Text);lblResult.Text=(radii*radii*PI).ToString();2.3 常量与变量2.3.2 变量变量具有在程序运行过程中值可以变化的特性,必须先声明后使用。变量名长度任意,可以由数字、字母、下划线等组成,但第一个字符必须是字母或下划线。C#变
20、量名是区分大小写的,变量的修饰符有public、private、static、protected等。2.4 数据类型与运算符C#是一门强类型的编程语言,它对变量的数据类型有严格规定。在定义变量的时候,必须事先声明变量的数据类型。同时,为变量赋值时也必须赋值于同类型的值,否则程序会报错。常用的基础数据类型有整数类型、浮点数类型、字符类型、布尔类型和日期时间类型等。1整数类型整数数据类型用来存储整数数据,即没有小数点的数值。在C#中,整数类型根据占用存储空间不同又分为字节型(byte)、短整型(short)、整型(int)和长整型(long)4类。2.4 数据类型与运算符2浮点数类型浮点数类型用来
21、存储小数数值。在C#中,浮点数分为单精度浮点数(float)和双精度浮点数(double)两种,默认小数是双精度浮点数。3字符类型字符数据类型用来存储字符数据。在C#中,有存储单个字符的char类型,以及存储多个字符组成的字符串string类型。4布尔类型布尔类型用来存储布尔值true和false,在C#中用bool表示,如“boolflag=true;”。2.4 数据类型与运算符5日期时间类型日期时间类型用来日期时间数据,在C#中用DateTime表示,如“DateTimedt=DateTime.Now;”。除了上述数据类型外,C#还有枚举类型、结构型、引用类型和数组等多种数据类型,鉴于篇幅
22、限制,不再一一介绍。2.4.2 数据类型转换在C#中根据转换方式不同,数据类型转换可以分为自动数据类型转换和强制数据类型转换2种。1自动数据类型转换自动数据类型转换也叫隐式数据类型转换,指的是两种数据类型在转换过程中不需要显式声明,就可以完成数据类型的转换。要进行自动类型数据转换必须满足两个条件,一是两种数据类型必须兼容;二是目标数据类型的取值范围要大于源类型的取值范围。(1)byte类型转换为int类型,int类型转换为long类型。(2)float类型转换为double类型,int类型转换为float类型。(3)char类型转换为string类型。2.4.2 数据类型转换2强制数据类型转换
23、强制数据类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要显式进行声明。如当两种数据类型不兼容,或者目标类型的取值范围要小于源数据类型,自动类型转换不能实现时,就需要使用强制数据类型转换来完成。(1)整数类型、浮点数类型和布尔类型转换为string类型,即数值转换为字符串,通常可以借助于ToString()方法实现。(2)日期时间类型转换为string类型,可以借助于ToString()方法实现。(3)日期格式的string类型转换为日期时间类型,可以借助于Convert.ToDateTime()方法实现。(4)string类型转换为int、float或double类型,可以借助于Co
24、nvert.ToInt32()或int.Parse()方法实现。2.4.2 数据类型转换【例2-2】使用多种数据类型变量,实现数据类型之间的转换。2.4.2 数据类型转换protectedvoidPage_Load(objectsender,EventArgse)bytex1=1;intx2=10;doublex3=0.1;charx4=H;stringx5=ello;DateTimex6=DateTime.Now;lblres1.Text=(x1+x2).ToString();/*x1+x2属于自动数据类型转换*/lblres2.Text=(x2+x3).ToString();/*x2+x3
25、属于自动数据类型转换*/lblres3.Text=(x4+x5).ToString();/*x4+x5属于自动数据类型转换*/lblres4.Text=x6.ToString();/*强制数据类型转换*/2.4.3 运算符运输符是具有计算意义的术语或符号,用于执行程序代码运算。它接收一个或多个操作数表达式,经过计算返回运算结果。根据操作数的个数多少不同,分为一元运算符、二元运算符和三元运算符。如取反运算符“!”是一元运算符,求和运算符“+”是二元运算符,条件运算符“?:”是三元运算符。C#常用运算符可以分为算术运算符、关系运算符、逻辑运算符和赋值运算符等,根据运算符的计算优先级从高到低排列。2
26、.4.3 运算符2.4.3 运算符2.5 流程控制顺序结构最为简单,即不包含选择和循环语句,程序从左到右、从上到下顺序执行。顺序结构是一种线性结构,也是程序设计中最简单、最常用的基本结构。其特点是按照语句的先后出现顺序,依次逐块执行。【例2-3】编程实现依次出现“想制作一个网站,怎么办?”、“一起学习ASP.NET。”和“我成功了!”,每句话在单独的一行。2.5 流程控制protectedvoidPage_Load(objectsender,EventArgse)stringstrbr=;Response.Write(想制作一个网站,怎么办?);Response.Write(strbr);Re
27、sponse.Write(一起学习ASP.NET。);Response.Write(strbr);Response.Write(我成功了!);2.5.2 选择结构选择结构是通过执行判断进行不同的操作。在条件语句中,作为判断依据的表达式称为条件表达式,条件表达式的取值为布尔值,即真true或假false。在C#中,选择结构有if和switch两种。1if语句if语句是最常用的条件语句,它的功能是根据布尔表达式的值,选择要执行的语句序列。if语句的语法结构有if格式和if-else格式两种。(1)if格式if(条件表达式)语句系列(2)if-else格式if(条件表达式)语句系列1else语句系列
28、22.5 流程控制【例2-4】制作一个考试成绩评价网页,根据输入的成绩值,判断是否及格。2.5 流程控制请输入考试成绩:你输入的成绩是2.5 流程控制protectedvoidButton1_Click(objectsender,EventArgse)doubledbScore=Convert.ToDouble(txtscore.Text);if(dbScore=60)lblmes.Text=dbScore.ToString()+,及格;elselblmes.Text=dbScore.ToString()+,不及格;2switch语句switch(控制表达式)case常量1:语句序列1case
29、常量2:语句序列2.default:语句序列n2.5 流程控制【例2-5】制作一个能够根据系统时间,判断当前是凌晨(0:006:00)、上午(6:0012:00)、下午(13:0018:00),还是晚上(18:0022:00).2.5 流程控制当前时间是:现在是2.5 流程控制protectedvoidPage_Load(objectsender,EventArgse)DateTimedtnow=DateTime.Now;lbltime.Text=dtnow.ToString();intan=dtnow.Hour/6;switch(an)case0:lblmes.Text=凌晨;break;c
30、ase1:lblmes.Text=上午;break;case2:lblmes.Text=下午;break;default:lblmes.Text=晚上;break;2.5.3 循环结构循环语句用于重复执行一个程序语句序列,如实现1+2+3+.+100重复计算99次加法运算。针对这种问题,使用循环结构,就可以很简单的完成。在C#中,循环结构有for、while、do.while和foreach等4种语句。1for语句for循环常用于已知循环次数的情况,循环体内语句序列可能执行0次或多次。其语法格式为:for(循环变量初始化;条件表达式;循环控制表达式)循环语句序列2.5.3 循环结构【例2-6】
31、制作一个页面,能够实现数字累加运算1+2+3+.+n(n由用户输入决定)2.5.3 循环结构请输入累加最大数字n:1+2+3+.+n=2.5.3 循环结构protectedvoidButton1_Click(objectsender,EventArgse)intsum=0;for(inti=1;i=int.Parse(txtmax.Text);i+)sum+=i;lblmes.Text=sum.ToString();2while语句while(条件表达式)循环语句序列【例2-7】制作一个页面,实现连续输出26个“*”号2.5.3 循环结构protectedvoidPage_Load(objec
32、tsender,EventArgse)inti=1;while(i=26)Response.Write(*);i+;3do.while语句do循环语句序列while(条件表达式);【例2-8】制作一个页面,实现数学阶乘计算n!,其中n由用户指定3do.while语句请输入要计算阶乘的整数n:计算结果为:3do.while语句protectedvoidButton1_Click(objectsender,EventArgse)intss=1,i=1;doss*=i;i+;while(i=int.Parse(txtkey.Text);lblmes.Text=ss.ToString();4forea
33、ch语句foreach(数据类型循环变量in集合)循环语句序列【例2-9】制作一个页面,使用foreach语句完成数组元素的读取3do.while语句protectedvoidPage_Load(objectsender,EventArgse)stringstrname=张莉,李小平,王盼盼;foreach(stringsninstrname)Response.Write(姓名:+sn+);2.5.4 异常处理try可能出错的语句序列catch(异常声明)捕获异常后执行的语句序列finally语句序列【例2-10】制作一个页面,实现两个数字相除计算出商,使用try.catch.finally语
34、句实现程序异常捕获2.5.4 异常处理2.5.4 异常处理protectedvoidButton1_Click(objectsender,EventArgse)trydoublen1=Convert.ToDouble(txtNum1.Text);doublen2=Convert.ToDouble(txtNum2.Text);lblmes.Text=结果是:+(n1/n2).ToString()+;catch(Exceptionee)lblmes.Text=系统出现错误;lblmes.Text+=提示信息:+ee.Message+;finallylblmes.Text+=程序执行结束;2.6 管
35、理员登录页面设计2.6 管理员登录页面设计protectedvoidPage_Load(objectsender,EventArgse)if(!IsPostBack)Randomrdnum=newRandom();lblcheck.Text=rdnum.Next(1000,1999).ToString();protectedvoidButton1_Click(objectsender,EventArgse)tryif(txtcheck.Text=lblcheck.Text)if(txtname.Text=admin&txtpwd.Text=123)Sessionadmin=txtname.Te
36、xt;Response.Redirect(webmain.aspx);elseResponse.Write(alert(用户名或密码有误,请重新输入););elseResponse.Write(alert(校验码输入不一致,请重新输入););catch(Exceptionee)Response.Write(程序运行错误,请检查:+ee.Message);2.7 知识拓展用随机数实现网页验证码,在网页开发过程中时常被使用。.NetFramework提供了一个专门产生随机数的类System.Random,该类默认已被导入,用户编程时可以直接使用。如:Randomrd=newRandom();int
37、rdkey=rd.Next(100);这里Random以系统时间做为参数,以此产生一个最大值为100的随机数。除此之外,我们还可以为随机数函数规定一个精确的范围,如100999:Randomrd=newRandom();intrdkey=rd.Next(100,999);2.7 知识拓展【例2-11】制作一个页面,实现随机显示图片2.7 知识拓展protectedvoidPage_Load(objectsender,EventArgse)Randomrd=newRandom();intrdkey=rd.Next(1,4);lblnum.Text=图像:+rdkey.ToString();img
38、pic.ImageUrl=imgs/图像+rdkey.ToString()+.jpg;常用标准控件第3章常用标准控件通过本章知识的学习,读者首先对服务器控件有些初步了解;掌握TextBox、Label、Button、DropDownList等常用控件的使用方法,以及利用表格进行网页页面布局的方法技巧,并利用本章知识设计和实现用户注册页面。通过本章内容的学习,读者可以达到以下学习目的:n了解服务器控件基础知识。n掌握文本控件(Label、TextBox控件)的使用方法。n掌握选择控件(RadioButtonList、CheckBoxList、DropDownList控件等)的使用方法。n掌握按钮
39、控件(Button、LinksButton、ImageButton控件等)的使用方法。n掌握利用表格进行页面布局的方法。n掌握网页设计中容器控件的使用方法。3.1 情景分析企业网站为了给会员提供具有针对性的服务,需要建立会员注册、登录和会员管理等页面。3.2 服务器控件概述1服务器控件的属性和事件服务器控件的属性,是指控件中具有的与用户界面特征相关的,或者与运行状态有关的字段。大部分服务器控件的属性可分为布局、数据、外观、行为和杂项等5类。布局类属性与页面控件元素的设置有关,如控件尺寸大小等;数据类属性包括与数据绑定相关的属性,如DataSource等;外观类属性包括背景色、字体格式等;行为类
40、属性与控件运行时相关,如Enable和Visible等;事件是指程序得以运行的触发器(如Button控件的Click事件等),当用户与Web页面进行交互时,控件被触发,并通过执行事件程序做出相应的响应。与传统客户端窗体中的事件,或者基于客户端的Web应用程序中的事件相比,由服务器控件的引发事件在工作方式稍有不同。前者在客户端引发和处理事件,而后者则是与服务器控件关联的事件在客户端引发,由ASP.NET页面框架在Web服务器上处理。对于在客户端引发的事件,Web窗体控件事件模型要求在客户端捕获事件信息,并且通过HTTP将事件消息传输到服务器。3.2 服务器控件概述公共对象模型。服务器控件是基于公
41、共对象模型的,因此它们可以相互共享大量属性,这也是软件复用思想的体现。例如,Label控件和Button控件都有设置背景颜色的属性,它们都使用同一属性BackColor。保存视图状态。传统的HTML元素是无视图状态的。当页面在服务器端和客户端之间来回传送时,服务器控件会自动保存视图状态。数据绑定模型。ASP.NET服务器控件为使用多种数据源提供了方便,可以快速实现数据绑定和访问,大大简化了动态网页的数据访问进程。用户定制。服务器控件为网页开发者提供了多种机制,定制属于自己的页面。例如,可以通过设置服务器控件的CSS属性来设置其外观。配置文件。服务器控件在Web应用程序级别上,可通过web.co
42、nfig文件对程序进行配置,这使得开发人员可对程序的行为进行统一的控制或改变,而无须对应用程序本身进行重新编译或生产。创建浏览器特定的HTML。当浏览器申请某个页面时,服务器控件会确定浏览器的类型,然后灵活生成适合该浏览器显示的HTML代码。3.3 常用服务器控件1Label控件Label控件用于在页面上显示文本信息,它不但支持静态文本显示,而且重点在于支持用户以编程方式动态显示文本。Label控件常用的属性有ID、Text和Font属性等。其中,ID表示控件标识,Text表示控件显示的文本内容,Font表示字体格式设置,如大小、颜色等。【例3-1】利用Label控件动态显示改变文本内容与显示
43、格式3.3 常用服务器控件protectedvoidButton1_Click(objectsender,EventArgse)lblmes.Text=DateTime.Now.ToString();lblmes.ForeColor=System.Drawing.Color.Red;lblmes.Font.Bold=true;2TextBox控件TextBox控件又称文本框控件,是用于输入任何类型的文本、数字或其它字符的文本区域。同时,TextBox控件也可以设置为只读控件,用于文本显示。2TextBox控件【例3-2】利用TextBox和Button控件制作用户登录页面,用户名最多支持3个字
44、符,光标移出姓名文本框时,屏幕上出现动态提示文字。密码输入时,以黑点或星号显示。点击“登录”按钮后,显示用户登录信息2TextBox控件姓名:密码:publicpartialclassEx2_2:System.Web.UI.PageprotectedvoidPage_Load(objectsender,EventArgse)protectedvoidtxtname_TextChanged(objectsender,EventArgse)Response.Write(你的姓名是:+txtname.Text);protectedvoidButton1_Click(objectsender,Even
45、tArgse)Response.Write(你是姓名是:+txtname.Text+密码是:+txtpwd.Text);3.3.2 选择控件1RadioButton控件3.3.2 选择控件【例3-3】利用RadioButton控件来获取用户性别信息3.3.2 选择控件请输入你的性别: protectedvoidButton1_Click(objectsender,EventArgse)/男女都没有选择if(rdbtnnan.Checked=false&rdbtnv.Checked=false)lblmes.Text=你没有选择性别,请重选选择;else/男女选择了其中一个if(rdb
46、tnnan.Checked=true)lblmes.Text=你选择了男性;if(rdbtnv.Checked)lblmes.Text=你选择了女;2.RadioButtonList控件2.RadioButtonList控件【例3-4】利用RadioButtonList控件实现考试系统中单选题的操作,效果如图3-12所示。同时,设置RadioButtonList控件的AutoPostBack属性和OnSelectedIndexChanged事件,实现单选选项时,能够实现文字提示的即时更新2.RadioButtonList控件郑州市是哪个省的省会(单选题)湖南省湖北省河南省湖北省2.RadioB
47、uttonList控件protectedvoidrdbtnpre_SelectedIndexChanged(objectsender,EventArgse)lblmes.Text=你现在选择的是:+rdbtnpre.SelectedItem.Text;protectedvoidButton1_Click(objectsender,EventArgse)if(rdbtnpre.SelectedItem.Value=3)lblmes.Text=回答正确;elselblmes.Text=错误;3CheckBox控件CheckBox控件用来表示是否选取了某个选项,常用于具有是/否、真/假选项的多项选择
48、。CheckBox控件和RadioButton控件类似,两者的区别在于CheckBox允许多选。【例3-5】制作网站“同意协议条款”、“内容已阅读”复选项3CheckBox控件3CheckBox控件protectedvoidButton1_Click(objectsender,EventArgse)if(ckbok.Checked&ckbsee.Checked)Response.Write(alert(成功提交信息););elseif(ckbok.Checked=false)Response.Write(alert(开通账号必须选择););if(ckbsee.Checked=false)Res
49、ponse.Write(alert(条款必须选择已经阅读););4CheckBoxList控件用CheckBox控件可以实现项目的多选,但在判断某一个项目被选中的时候,则需要对每一个项目的Selected属性进行判断。而使用CheckBoxList控件,再对控件中全部项目Selected属性判断时,则可以采用foreach循环来完成,从而大大简化了程序开发效率。【例3-6】利用CheckBoxList控件实现在线考试的多选题。根据用户所选择的项目,判断是否正确4CheckBoxList控件以下城市属于河南省的有( )郑州市石家庄开封市洛阳市4CheckBoxList控件p
50、rotectedvoidButton1_Click(objectsender,EventArgse)stringss=,tt=;foreach(ListItemliinckblcity.Items)if(li.Selected)ss+=li.Text;tt+=li.Value;lblmes.Text=你选择的城市是:+ss+你选择的值是+tt;if(tt=134)Response.Write(alert(回答正确););elseResponse.Write(alert(错误););5DropDownList控件DropDownList控件是一个下拉式列表控件,功能和RadioButtonLis