【asp源码栏目提醒】:网学会员在asp源码频道为大家收集整理了“asp.net语言程序设计案例教程1第3章 - 大学课件“提供大家参考,希望对大家有所帮助!
中国铁道出版社 返回目录 目录 第3章 WebForm与控件基础 3.1【案例17】Web Form信息传递 ● WebForm基本概念 ● WebForm网页模型 ●
ASP.NET服务器控件基础 ●
ASP.NET服务器控件的分类 ●
ASP.NET的事件驱动机制 ●
ASP.NET中文字符乱码问题的解决 1中国铁道出版社 返回目录 目录 3.2【案例18】查询浏览时间 ● Page类 ● 页面指令 ● 页面状态 ● 页面事件 2中国铁道出版社 返回目录 程序
源码 3.1【案例17】Web Form信息传递 3.2【案例18】查询浏览时间 3中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 案例效果 本案例中,将演示在页面中通过WebForm中的文本框控件输入信息,并通 过标签控件显示信息。
案例效果如图3-1-1所示(图3-1-1(a)是打开网页 时的页面,图3-1-1(b)是在文本框内输入“张明”并单击【确定】按钮后 的页面)。
(a) (b) 图3-1-1 WebForm信息传递 在本案例的实现过程中,将学习
ASP.NET的重要内容——WebForm,了解 在
ASP.NET中如何通过WebForm和控件对象来输入和处理数据。
设计过程(见书) 4中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 相关知识 1.WebForm基本概念 在
ASP.NET应用程序开发中,WebForm是一个非常重要的对象。
WebForm代 表了一个一个的Web页面,WebForm就像是一个容纳各种控件的容器,页面中 的各种控件都必须直接或者间接的和它有依存关系。
在早期的
ASP版本中,都是使用HTML的Form表单控件来获取用户的输入数 据。
在
ASP.NET中,对很多HTML服务器控件的功能进行了扩展,使得HTML服 务器控件的功能大大提高,用户使用起来更加方便;其次,
ASP.NET还提供 了大量Web服务器控件用于实现对用户请求的响应。
对于WebForm的Form而言,与HTML中的表单很相似,在HTML的ltFormgt标签 中加入RunatquotServerquot就构成了WebForm的Form,如下所示: ltForm RunatquotServerquotgt 有了Runat“Server”这一句,表示该表单是在服务器端运行,而不是 在客户端。
同样在控件标签中添加了Runat“Server”,控件也就相应地成 为了
ASP.NET服务器端运行的控件对象。
可以看到,WebForm在
ASP.NET中不完全是HTML中所学过的Form表单。
从
ASP.NET的角度,将WebForm看成是Web页面更为合适一些。
从使用上来看, WebForm实际上是一个“对象”(Object)。
5中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 在前面的学习中可以了解到在.NET框架中“对象”是一个非常重要的概 念,所有的控件都是对象,甚至数据类型都成了对象,每种数据类型都有自 己特有的属性和方法。
WebForm也是一个对象,它具有自已的属性、方法和 事件等内容。
此外,与HTML表单不同,一个网页可以有多个ltFormgt表单,而 一个WebForm 只能有一个ltForm RunatquotServerquotgt标签。
当ASPX页面被客户端请求时,页面的服务器端代码被执行,执行结果被 送回到浏览器端。
这一点和
ASP并没有太大的不同。
但是,
ASP.NET的架构还 做了许多别的事情。
比如,它会自动处理浏览器的表单提交,把各个表单域 的输入值变成对象的属性,使得设计者可以像访问对象属性那样来访问客户 的输入。
此外,还会将客户的操作映射到不同的服务器端事件,例如, OnClick事件。
ASP.NET的WebForm是可以在服务器上用于动态生成Web页的可 缩放公共语言运行库编程模型。
作为
ASP的升级扩展,
ASP.NET WebForm被特 别设计为弥补
ASP中若干主要的不足之处。
具体说来,它提供了如下好处。
(1)创建和使用可封装常用功能的可重用UI(用户界面)控件,并由此 减少页面开发人员必须编写的代码量,为生成动态Web用户界面提供了一个 容易实现且功能强大的方法。
(2)开发人员以有序的形式——面向事件驱动方式清晰地构造页面逻 辑。
(3)精简、直观且一致的面向对象模型,让设计者可以方便地操纵控件 对象,而不需要考虑与HTML进行转换的细节。
(4)WebForm会自动进行状态管理,处理窗体和控件的维护工作。
6中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 可以使用WebForm来创建可编程的Web页,这些Web页用做Web应用程序的 用户界面。
WebForm在任何浏览器或客户端设备中向用户提供信息,并使用 服务器端代码来实现应用程序逻辑。
WebForm能够输出几乎可以包含任何支 持HTTP的语言(包括HTML、XML、WML、JScript和JavaScript等)。
含有WebForm的
ASP.NET的文件后缀名为.aspx,当一个浏览器第一次请求 一个ASPX文件时,WebForm 页面将被CLR(Common Language Runtime,公共 语言运行库,是.NET平台的基础)编译器编译。
此后,当再有用户访问此页 面的时候,由于ASPX页面已经被编译过,所以,CLR会直接执行编译过的代 码。
这和
ASP的情况完全不同,
ASP只支持VBScript和JavaScript这样的解释 性的脚本语言,所以
ASP页面是解释执行的。
当用户发出请求后,无论是第1 次,还是第1000次,
ASP的页面都将被动态解释执行。
而
ASP.NET支持可编译 的语言,包括VB.NET、C、JScript.NET等。
所以,
ASP.NET页面可以一次编 译,多次执行。
(因此,微软建议将所有的文件哪怕是纯HTML文件都保存为 ASPX文件后缀,这样可以加快页面的访问效率。
) 为了简化程序员的工作,ASPX页面不需要手工编译,而是在页面被调用 的时候,由CLR自行决定是否编译。
一般来说,在两种情况下,ASPX页面会被编译:一是ASPX页面第1次被浏 览器请求;其次是ASPX页面的内容被修改。
由于ASPX页面可以被编译,所以 ASPX页面具有组件一样的性能,这就使得ASPX页面至少比实现同样功能的
ASP页面快2~3倍。
7中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 2.WebForm网页模型 在WebForm网页中,网页内容被分隔成两个部分:可视化的组件与用户接 口逻辑。
如同本案例中所见到的,可视化的组件部分(包括HTML元素、服务 器控件和静态文本)可以以“所见即所得”方式来创建。
例如,本例中的按 钮、文本框和标签可以在Dreamweaver 8 的“设计视图”中通过“插入”工 具栏来插入。
而用户接口逻辑即程序功能代码部分(包括声明、类定义、事 件处理程序等)可以在“代码视图”中进行代码编辑。
这样,将可视化的组 件与实现功能的程序代码分开,方便网页的开发。
WebForm网页模型如图3- 1-13所示。
可视化组件设计 合成 WebForm 在 网页页面内容 客户端的执行效果 用户接口逻辑设 计事件处理程序 图3-1-13 WebForm网页模型 8中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 3.
ASP.NET服务器控件基础 在
ASP.NET中,一切内容都可以看作是对象,WebForm 本身就是一个对象,同时也 是一个一个对象的容器。
在网页设计中,可以在WebForm中插入
ASP.NET提供的服务器控 件(Server Control)。
简单地说,控件就是一个可重用的组件或者对象,这个组件不但有自己的外观,还 有自己的属性和方法,大部分组件还可以响应事件(如本例中的OnClick事件)。
通过 Dreamweaver 8网页设计环境,可以方便地把控件插入到WebForm中。
这些控件称为服务器控件是因为它们都是在服务器端存在的。
在WebForm 中,虽然 大多数的事件都是由客户端产生(如单击事件Click),但却是在服务器端得到处理。
在本节案例中,使用了3个服务器控件: ltasp:TextBox IDquottxtNamequot Textquot输入姓名quot runatquotserverquot /gt ltasp:Button IDquotbtnSubmitquot runatquotserverquot Textquot确定quot OnClick quotbtnSubmit_Clickquot /gt ltasp:Label IDquotlabMsgquot runatquotserverquot /gt 上面的3行语句分别用到了文本框控件TextBox,按钮控件Button和标签控件 Label。
可以看到3个控件都有相同的runat属性: runatquotserverquot 所有的服务器控件都有这样的属性。
这个属性标志了一个控件是在服务器端进行处 理的。
9中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 当在客户端浏览器中浏览时,服务器控件的外观由HTML代码来表现。
例 如,对于本案例中的服务器控件,在IE浏览器中浏览时,选择“查看”菜单 下的“源文件”命令,可以看到HTML代码的内容。
可以看到,设计时的服务 器控件在发往客户端浏览器时,都被转换成相应的HTML标签: ltform runatquotserverquotgt被转换为ltform namequot_ctl0quot methodquotpostquot action quotWebForm.aspxquot idquot_ctl0quotgt 文本框ltasp:TextBox IDquottxtNamequot Textquot输入姓名quot runatquotserverquot /gt被转换为ltinput namequottxtNamequot typequottextquot valuequot输入姓名quot idquottxtNamequot /gt 按钮ltasp:Button IDquotbtnSubmitquot runatquotserverquot Textquot确定quot OnClick quotbtnSubmit_Clickquot /gt被转换为ltinput typequotsubmitquot namequotbtnSubmitquot valuequot确定quot idquotbtnSubmitquot /gt 标签ltasp:Label IDquotlabMsgquot runatquotserverquot /gt被转换为ltspan idquotlabMsgquotgt lt/spangt。
如上所示,服务器控件在初始化时,会根据客户的浏览器版本,自动生 成适合浏览器的HTML代码,而以前在制作网页或者
ASP程序时候,必须考虑 到浏览器的不同版本对HTML的支持有所不同,比如Netscape和IE对DHTML的 支持就有所不同。
以前,解决浏览器版本兼容问题的最有效方法,就是在不 同版本的浏览器中作测试。
现在,由于服务器控件能够自动适应不同的浏览 器版本,也就是自动兼容不同版本的浏览器,网页设计的工作量得到了很大 的减轻。
10中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 4.
ASP.NET服务器控件的分类
ASP.NET提供的服务器控件包括HTML服务器控件和Web服务器控件两大 类。
(1)HTML服务器控件 HTML服务器控件是对应的HTML元素在服务器端的体现,HTML服务器控件 就像HTML元素的服务器翻版;但在某些功能上,HTML服务器控件则完全超越 了HTML元素的功能。
大多数的HTML元素都有对应的HTML服务器控件,HTML服务器控件实现只 需要在HTML标签内添加了RunatquotServerquot和Id属性值就可以完成。
HTML服务器控件比HTML标签多了Id以及Runat这两种属性。
Id属性表示该 对象的名称,程序是通过Id来实现对对象的控制的(倘若该对象在程序执行 时不需要被程序控制,则可以忽略Id属性),所以任何对象的Id属性不可重 复,不管它们是否为同一种类的控件。
而Runat属性表示这个对象是在 Server 端执行,所有的HTML服务器控件都必须加上这个属性设置值。
HTML 服务器控件是HTML元素的服务器端表示,任何包含在ASPX页面中, 且具有RunatquotServerquot属性的HTML元素都将成为服务器端的HTML服务器控 件。
这些控件都源于命名空间System.Web.UI.htmlControls。
如果使用的HTML元素的功能不能用任何具有服务器端功能的控件所表 示,如div或span,就把它表示成普通的HTML服务器控件案例。
设计HTML 服务器控件时,把它们都和HTML元素直接对应,这意味着可以 很容易地把传统的
ASP应用程序转换成
ASP.NET应用程序,只需更改HTML元 素,添加上RunatquotServerquot属性和Id属性。
然后把文件后缀从.
asp改 为.aspx。
这样
ASP.NET页面中就会转换为服务器端控件。
11中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 如上所述,HTML服务器控件是在服务器端运行的、可编程的HTML元素。
HTML 服务器控件是开放的对象模型,该模型非常密切地映射到它们呈现的 HTML元素,如同前面案例中所见的
ASP.NET控件。
表3-1-1列出了HTML服务器 控件与HTML标签的对应关系。
表3-1-1 HTML服务器控件与HTML标签 12中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 HTML服务器控件的使用和HTML元素使用的方法差不多,只要在使用的时候加上Id 以及Runat这两个属性即可。
可以选择下列两种格式来使用HTML服务器控件,一种格式 是有起始和结束标签的HTML服务器控件: lt标签Idquot控件名称quot RunatquotServerquot 属性1quot值quot 属性2…gt 所要显示的文字 lt/标签gt 例如: lttextarea Idquottxtmsgquot colsquot40quot rowsquot5quot RunatquotServerquotgt HTML服务器控件展示 这是一个文本域控件 lt/textareagt 上面的代码将在页面中显示一个可显示/编辑多行文字的文本域HtmlTextArea控 件,控件宽度为40个字符,高度为5行字符。
另一种格式是单独一个标签的HMTL控件: lt标签Idquot控件名称quot RunatquotServerquot 属性1 quot值quot 属性2…/gt 例如: ltinput typequottextquot Idquotinputtextquot RunatquotServerquot /gt 在上面的代码中,使用HTML服务器控件中的HtmlInputText控件在网页上建立一个 文本输入框。
13中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 (2)Web服务器控件 相对HTML服务器控件而言,Web服务器控件是一种更为强大而完善的控件对 象,Web服务器控件与HTML服务器控件相比较是不一样的,HTML控件是将HTML标签 对象化,让设计者的程序代码比较好控制以及管理这些控件,不过基本上它还是 转成相对应的HTML标签。
而Web 控件的功能比较强,它会依客户端的状况产生一 个或多个适当的HTML 控件,它可以自动侦测客户端浏览器的种类,并自动调整成 适合浏览器的输出。
Web 控件还拥有一个非常重要的功能,那就是支持数据绑定 (Data Binding),这种能力可以和资料源连结,用来显示或修改数据源的数 据。
微软已经将Web服务器控件打包得很完整,并以面向对象概念来设计,且又加 入了许多控件的属性、方法及事件,所以Web服务器控件在组件的整体功能变得十 分强大,使得
ASP.NET程序开发者在利用Web服务器控件设计Web程序时更加容易、 更有效率。
使用Web服务器控件进行开发,就如同使用可视化的程序开发软件(如VB、 Delphi等)设计GUI(图形用户界面)的应用程序一样,可以快速、便捷地完成
ASP.NET Web程序的开发。
例如: labMsg.VisibleTrue 上面语句利用控件的Visible属性在程序执行时让控件显示 (VisibleTrue)。
在本节的案例中可以看到,网页中的按钮、文本框和标签都是以Web服务器控 件形式插入到WebForm中。
14中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递
ASP.NET在标准控件的基础上还提供了大量功能强大的实用控件,如 AdRotator(广告轮显控件)、Calendar(月历控件)、DataGrid(数据表 格控件)等。
这样,用Web服务器控件来设计一个动态的Web网页,就变得非 常容易。
Web服务器控件源于命名空间System.Web.UI.WebControls,表3-1- 2列出了常用的Web服务器控件。
表3-1-2 常用Web服务器控件 15中国铁道出版社 返回目录 3.1 【案例17】Web Form信息传递 Web服务器控件的使用格式如下: ltasp:控件名称 IDquot控件案例名quot runatquotserverquot 属性1… 属性 2…gt 例如,本节案例中使用下面的3行语句来创建文本框控件TextBox、按钮 控件Button和标签控件Label。
ltasp:TextBox IDquottxtNamequot Textquot输入姓名quot runatquotserverquot /gt ltasp:Button IDquotbtnSubmitquot runatquotserverquot Textquot确定quot OnClick quotbtnSubmit_ Clickquot /gt .