当前位置: 首页 > 新闻 > 信息荟萃
编号:5681
Web程序设计ASP.NET第2版.pdf
http://www.100md.com 2020年11月17日
第1页
第10页
第20页
第28页
第46页
第113页

    参见附件(23545KB,606页)。

     《21世纪高等教育计算机规划教材:Web程序设计·ASP.NET(第2版)》实践知识与理论知识并重,力求使读者通过亲自动手来掌握ASP.NET新技术,从而学习尽可能多的知识,了解尽可能多的应用

    内容简介

    全书共12章,内容分为两部分。第一部分为第1章和第2章,主要介绍Web基础知识和ASPNET相关知识。第二部分为第3章-第12章,从网络涉及的实用模块出发,结合流行的技术和组件,详细介绍每个模块的设计原理及实现过程,进而讲解ASP.NET在网络开发中的应用,内容主要包括ASPNET控件、ADO.NET、数据绑定、LINQ查询、网站主题、数据验证和网络优化等。

    本书实践知识与理论知识并重,力求使读者通过亲自动手来掌握ASPNET新技术,从而学习尽可能多的知识,了解尽可能多的应用。本书可作为普通高等院校相关专业Web程序设计、网络程序设计、ASPNET程序设计等课程的教材,同时也适用于初、中级ASPNET用户学习参考。

    本书特点

    1.版本最新,与时俱进

    采用最新的ASP.NET 4.0技术,使用Visual Studio 2010开发环境,在讲解各个实例的时候,结合了它的新功能。

    2·采用最流行的网络应用模块

    本书涉及了网站中常见的应用模块,并详细介绍了模块的应用方向。

    3步骤清晰,说明详细

    在具体介绍模块功能的时候,为了让读者从开始就能知道这个模块的实现方法,本书还提供了详细的图例,说明模块是如何设计、如何实现以及如何应用到项目中的,并且在图例中稍显复杂的地方提供了详细的标注,让读者一看就明白整个模块的设计原理和实现手段。

    4讲解通俗,步骤详细

    每个实例的制作步骤都以通俗易懂的语言阐述,并穿插讲解有关技巧性内容,在阅读时就像听课一样详细而贴切。读者只需要按照步骤操作,就可以轻松地完成一个模块的制作,这样不但掌握了开发的步骤,还掌握了开发的技巧。

    现在Intemet的发展

    随着大量商业公司网络进入Intemet,网上商业应用取得高速的发展,同时也使Internet能为用户提供更多的服务,使Intermet迅速普及和发展起来。

    现在Intemet已发展得更为多元化,不仅仅单纯为科研服务,正逐步进入人们日常生活的各个领域。近几年来,Intermet在规模和结构上都有了很大的发展,已经发展成为一个名副其实的“全球网"。

    网络的出现,改变了人们使用计算机的方式,而Internet的出现,又改变了人们使用网络的方式。Intemet使计算机用户不再被局限于分散的计算机上,同时,也使他们脱离了特定网络的约束。任何人只要进入了Intemet,就可以利用网络中和各种计算机上的丰富资源。

    HTTP简介

    在我们访问网站的时候,通常都会在浏览器的地址栏里输入网站地址,这个地址就是URL(Uniform Resource Locator,统一资源定位系统)。当确定要访问这个网址的时候,浏览器就会通过HTTP从Web服务器上获取提取的网页代码,最终翻译成用户易读的页面文字、图片和多媒体等信息。

    例如,Microsoft官方的网址为http://www.Microsoft.com/,其各个组成部分的含义如下。

    http://:代表超文本传输协议,通知Microsoft.com服务器显示Web页,通常不用输入。

    www:代表一个Web(万维网)服务器。

    Microsoft.com:这是装有网页的服务器的域名或站点服务器的名称。

    Internet的基本协议是TCP/P,然而在TCPP模型最上层的是应用层

    (Application Layer),它包含所有高层的协议。高层协议有文件传输协议(FTP)、电子邮件传输协议(SMTP)、域名系统服务

    (DNS)、网络新闻传輸协(NNTP)和超本t协i(HTTP)等。

    HTTP是用于从www服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是在浏览器中看到的网页地址都是以“htp://头的原因。

    Web程序设计ASP.NET第2版截图

    目 录

    封面

    扉页

    版权

    前言

    第1章 Web基础知识

    1.1 Internet基础

    1.1.1 Internet的起源

    1.1.2 现在Internet的发展

    1.2 Web结构

    1.2.1 HTTP简介

    1.2.2 BS结构简介

    1.2.3 CS结构简介

    1.2.4 BS结构与CS结构比较

    1.2.5 Web系统的三层结构

    1.3 网页构成技术——HTML

    1.3.1 HTML概述

    1.3.2 HTML文件结构

    小结

    习题

    上机指导

    实验:输出一个字符串

    第2章 ASP.NET概述

    2.1 .NET开发

    2.1.1 .NET框架简介2.1.2 ASP.NET与.NET框架的关系

    2.1.3 ASP、ASP.NET、PHP、JSP比较

    2.2 开发工具Visual Studio 2010概述

    2.2.1 Visual Studio 2010简介

    2.2.2 使用Visual Studio 2010

    2.2.3 配置IIS

    2.3 第一个ASP.NET程序

    2.3.1 搭建Web项目

    2.3.2 添加代码

    2.3.3 分析代码

    2.3.4 测试代码

    小结

    习题

    上机指导

    实验一:输出一个字符串

    实验二:交互式输出字符串

    第3章 ASP.NET常用控件

    3.1 开发站点前的配置

    3.1.1 创建Web站点

    3.1.2 ASP.NET配置文件

    3.1.3 使用站点安全工具配置身份验证模式

    3.1.4 配置站点的数据存储方式

    3.1.5 定制自己的数据存储方式

    3.2 ASP.NET控件概述

    3.2.1 HTML控件

    3.2.2 HTML服务器控件

    3.2.3 Web服务器控件3.3 常用的ASP.NET服务器控件

    3.3.1 文本框控件TextBox

    3.3.2 按钮控件Button

    3.3.3 单选框控件RadioButton

    3.3.4 链接按钮控件LinkButton

    3.3.5 列表框控件ListBox

    3.3.6 复选框控件CheckBox

    3.3.7 图像控件Image

    3.4 登录控件

    3.4.1 登录控件简介

    3.4.2 使用登录控件

    3.5 最普通的登录方式

    3.5.1 用户注册功能

    3.5.2 用户登录功能

    3.5.3 修改密码功能

    3.5.4 在登录页面中添加注册导航功能

    3.5.5 显示登录用户名和用户状态功能

    3.5.6 根据用户登录身份显示不同效果页功能

    3.5.7 小结

    3.6 基于角色的登录方式

    3.6.1 在应用程序中启用角色

    3.6.2 创建角色

    3.6.3 创建角色访问规则

    3.6.4 赋予用户角色权限

    3.6.5 验证角色的登录

    3.6.6 小结

    3.7 匿名用户的授权管理小结

    习题

    上机指导

    实验一:用户注册功能

    实验二:用户管理系统

    第4章 ASP.NET对象编程

    4.1 ASP.NET的数据持久性对象

    4.1.1 Session对象简介

    4.1.2 Cookies对象简介

    4.1.3 Application对象简介

    4.1.4 ViewState对象简介

    4.2 ASP.NET的数据访问对象

    4.2.1 访问Server对象

    4.2.2 访问Request对象

    4.2.3 访问Response对象

    4.3 访问Access数据库

    4.3.1 System.Data.OleDb命名空间

    4.3.2 打开和关闭连接

    4.3.3 读取数据

    4.3.4 使用SQL语句操作数据

    4.4 一个简单的投票系统

    4.4.1 设计投票功能的数据存储方式

    4.4.2 投票项目管理功能

    4.4.3 投票功能

    4.4.4 图形化显示投票结果功能

    4.4.5 小结

    4.5 防止重复投票技术4.5.1 利用Session对象

    4.5.2 利用Cookies对象

    4.5.3 验证IP和登录时间

    小结

    习题

    上机指导

    实验一:从Access数据库中读取数据

    实验二:投票系统

    第5章 ASP.NET常用验证控件

    5.1 ASP.NET验证控件

    5.1.1 验证控件介绍

    5.1.2 验证控件的基类BaseValidator

    5.2 使用ASP.NET验证控件

    5.2.1 使用RequiredFieldValidator进行非空验证

    5.2.2 使用RangeValidator限定输入范围

    5.2.3 使用CompareValidator进行比较验证

    5.2.4 使用CustomValidator自定义验证

    5.2.5 使用ValidationSummary显示验证信息

    5.3 使用正则表达式

    5.3.1 正则表达式的用途

    5.3.2 正则表达式的语法

    5.3.3 使用RegularExpressionValidator验证数据

    5.4 控件前缀

    小结

    习题

    上机指导

    实验:实现注册页面的验证第6章 ASP.NET常用主题控件

    6.1 导航控件

    6.1.1 使用Menu创建菜单

    6.1.2 使用TreeView创建树菜单

    6.1.3 使用SiteMapPath创建导航路径

    6.2 使用母版页

    6.2.1 添加母版页

    6.2.2 添加内容页

    6.2.3 母版页应用

    6.2.4 母版页应用原理

    6.3 母版页进阶

    6.3.1 指定默认内容

    6.3.2 动态设置母版页

    6.3.3 母版页与内容页的事件触发顺序

    6.4 统一站点主题

    6.4.1 添加主题

    6.4.2 应用主题

    6.4.3 使用配置文件配置主题

    6.5 使用用户控件

    6.5.1 添加用户控件

    6.5.2 制作登录用户控件

    6.5.3 使用登录用户控件

    6.5.4 在web.config中注册用户控件

    6.5.5 转换现有页为用户控件

    6.6 用户控件进阶

    6.6.1 公开用户控件中的属性

    6.6.2 动态创建用户控件6.7 Web窗体的处理过程

    小结

    习题

    上机指导

    实验一:创建一个母版页

    实验二:添加一个内容页

    实验三:创建一个用户控件

    第7章 ADO.NET编程

    7.1 SQL Server概述

    7.1.1 SQL Server简介

    7.1.2 SQL Server安装

    7.1.3 SQL简介

    7.2 访问SQL Server数据库

    7.2.1 System.Data.SqlClient命名空间简介

    7.2.2 打开和关闭连接

    7.2.3 读取数据

    7.2.4 使用SQL语句操作数据

    7.3 创建留言板

    7.3.1 设计保存留言内容的数据库

    7.3.2 部署数据库提供程序

    7.3.3 保存数据的方法

    7.3.4 发表留言功能

    7.3.5 浏览所有留言功能

    7.3.6 管理员登录功能

    7.3.7 删除留言功能

    7.3.8 小结

    小结习题

    上机指导

    实验一:从SQL Server数据库中读取数据

    实验二:留言板系统

    第8章 XML访问

    8.1 XML技术

    8.1.1 理解XML

    8.1.2 XML相关类

    8.1.3 XML数据的访问

    8.1.4 创建XML节点

    8.1.5 修改XML节点

    8.1.6 删除XML节点

    8.1.7 使用XSL文件

    8.2 创建XML留言板

    8.2.1 保存留言内容的XML模板

    8.2.2 读取和保存XML数据的方法

    8.2.3 发表留言功能

    8.2.4 浏览所有留言功能

    8.2.5 管理员登录功能

    8.2.6 用XSL文件转换XML文件

    8.2.7 删除留言功能

    8.2.8 小结

    小结

    习题

    上机指导

    实验一:读取XML数据

    实验二:留言板系统第9章 数据绑定

    9.1 数据绑定控件

    9.1.1 GridView控件的使用

    9.1.2 Repeater控件的使用

    9.1.3 DataList控件的使用

    9.2 后台管理模块

    9.2.1 新闻模块数据库设计

    9.2.2 新闻发布模板

    9.2.3 新闻修改和删除功能

    9.2.4 后台管理登录功能

    9.3 新闻主界面展示功能

    9.3.1 普通展示功能

    9.3.2 滚动展示功能

    9.4 新闻列表功能

    9.5 新闻内容浏览功能

    9.6 整合新闻发布模块

    小结

    习题

    上机指导

    实验一:使用GridView控件显示数据

    实验二:新闻发布系统

    第10章 强大的LINQ查询

    10.1 认识LINQ

    10.2 LINQ语法基础

    10.2.1 局部变量

    10.2.2 扩展方法

    10.2.3 Lambda表达式10.2.4 匿名类型

    10.3 认识LINQ to DataSet

    10.3.1 对DataSet对象使用LINQ查询

    10.3.2 LINQ to DataSet应用实例

    10.4 认识LINQ to SQL

    10.4.1 创建LINQ to SQL实体类

    10.4.2 查询数据

    10.4.3 插入数据

    10.4.4 修改数据

    10.5 LINQ to XML

    10.5.1 使用LINQ to XML创建一个XML文件

    10.5.2 常用方法

    10.5.3 高级查询

    10.5.4 向XML树中添加元素、属性和节点

    10.6 设置网站的关键字

    小结

    习题

    上机指导

    实验:使用LINQ查询数据

    第11章 网站优化

    11.1 数据库方面

    11.1.1 在ADO.NET中调用存储过程

    11.1.2 使用LINQ调用存储过程

    11.1.3 合理使用连接池

    11.1.4 优化查询语句

    11.2 C代码优化

    11.2.1 多用泛型11.2.2 优先采用使用foreach循环

    11.2.3 不要过度依赖异常处理

    11.2.4 使用StringBuilder类拼接字符串

    11.3 ASP.NET方面

    11.3.1 适当使用服务器控件

    11.3.2 使用缓存

    11.3.3 优化ASP.NET配置文件

    11.3.4 ASP.NET网站预编译

    11.3.5 其他

    11.4 使用AJAX技术

    11.4.1 认识AJAX

    11.4.2 使用AJAX服务器控件

    11.4.3 AJAX购票系统

    小结

    习题

    上机指导

    实验一:刷新页面更改当前时间

    实验二:缓存当前时间

    实验三:利用母版页缓存时间

    实验四:使用AJAX动态显示时间

    实验五:使用AJAX刷新页面

    第12章 综合实例——BBS论坛

    12.1 论坛数据库的介绍

    12.1.1 设计数据库结构

    12.1.2 设置数据表关系

    12.1.3 配置数据库Provider

    12.1.4 配置web.config中的数据库连接12.1.5 添加数据库访问类

    12.2 新用户入口

    12.2.1 用户注册

    12.2.2 用户登录

    12.3 论坛主题的类别

    12.3.1 添加论坛的类别

    12.3.2 编辑论坛的类别

    12.3.3 显示论坛的类别

    12.4 论坛的帖子详细信息

    12.4.1 帖子列表的显示

    12.4.2 帖子的发布

    12.4.3 显示帖子的详细信息

    12.4.4 帖子的回复

    小结21世纪高等教育计算机规划教材

    Web程序设计——ASP.NET(第2版)

    Web Development——ASP.NET

    ■陈冠军 马翠翠 主编

    ■赵越 陈静 副主编

    人民邮电出版社

    北京图书在版编目(CIP)数据

    Web程序设计:ASP.NET陈冠军,马翠翠主编,--2版.--北京:人

    民邮电出版社,2013.4

    21世纪高等教育计算机规划教材

    ISBN 978-7-115-31127-6

    Ⅰ.①W… Ⅱ.①陈…②马… Ⅲ.①网页制作工具—程序设计—高

    等学校—教材 Ⅳ.①TP393.092

    中国版本图书馆CIP数据核字(2013)第040427号

    内容提要

    全书共12章,内容分为两部分。第一部分为第1章和第2章,主要介

    绍Web基础知识和ASP.NET相关知识。第二部分为第3章~第12章,从

    网络涉及的实用模块出发,结合流行的技术和组件,详细介绍每个模块

    的设计原理及实现过程,进而讲解 ASP.NET 在网络开发中的应用,内

    容主要包括 ASP.NET控件、ADO.NET、数据绑定、LINQ 查询、网站

    主题、数据验证和网络优化等。

    本书实践知识与理论知识并重,力求使读者通过亲自动手来掌握

    ASP.NET新技术,从而学习尽可能多的知识,了解尽可能多的应用。本

    书可作为普通高等院校相关专业 Web 程序设计、网络程序设计、ASP.NET程序设计等课程的教材,同时也适用于初、中级ASP.NET用户

    学习参考。

    21世纪高等教育计算机规划教材

    Web程序设计——ASP.NET(第2版)

    ◆主编 陈冠军 马翠翠

    副主编 赵越 陈静

    责任编辑 李海涛

    ◆人民邮电出版社出版发行 北京市崇文区夕照寺街14号

    邮编 100061 电子邮件 315@ptpress.com.cn网址 http:www.ptpress.com.cn

    三河市海波印务有限公司印刷

    ◆开本:787×1092 116

    印张:16.75 2013年4月第2版

    字数:455千字 2013年4月河北第1次印刷

    ISBN 978-7-115-31127-6

    定价:35.00元

    读者服务热线:(010)67170985 印装质量热线:(010)67129223

    反盗版热线:(010)67171154前言

    随着各种平板电脑和新兴网站的发展,目前Web开发成为世界上很

    流行的职业,Web 网站成为非常赚钱的网站,微软公司推出的

    ASP.NET,是很具竞争力的Web 开发技术。因为它提高了界面和代码的

    可定制性,封装了复杂的运算和抽象的类,使得网络开发入门人员可以

    更轻松地掌握开发技术。

    因此,越来越多的高等院校开始在计算机科学与技术、网络工程、软件工程等相关专业开设“Web程序设计”、“网络程序设计”、“ASP.NET

    程序设计”等课程。课程的授课内容和授课方式随着技术的发展也在不

    断更新和完善,相应的教材也层出不穷。

    然而,编者在实际的教学过程中发现,传统的“Web 程序设

    计”、“网络程序设计”、“ASP.NET 程序设计”等课程教材在内容组织上

    与原有的程序设计类课程教材相类似,主要以一个一个的知识点理论讲

    解为主,间或插入一些小的演示性或验证性实例。学生通过这种方式完

    成这些课程的学习后,他们会觉得自己学习了大量的语言知识和编程知

    识,但是当真正坐在计算机前开始进行网络应用开发时,却往往会感到

    无从下手。

    为了改变目前Web程序设计类课程的现状,在介绍理论知识的同时

    真正培养学生实际的动手开发能力,编者在总结多年教学经验的基础上

    精心编写了本书。

    全书共12章,分为两部分。第一部分为第1章和第2章,主要介绍了

    Web基础知识和 ASP.NET 相关知识,内容讲解符合学生的学习和认知规律,帮助学生为深入学习本课程做好准备。第二部分为第 3章~第 12

    章,从网络涉及的实用模块出发,结合流行的技术和组件,详细介绍每

    个模块的设计原理及实现过程,进而讲解ASP.NET 4.0 在网络开发中的

    应用。在讲解具体知识的时候,本书语言简单易懂,通过告诉读者如何

    实现特定功能,进而让读者在实际操作中熟悉软件的开发技术。

    与其他相关教材相比,本书具有下列特点。

    1.版本最新,与时俱进

    采用最新的ASP.NET 4.0技术,使用Visual Studio 2010开发环境,在讲解各个实例的时候,结合了它的新功能。

    2.采用最流行的网络应用模块

    本书涉及了网站中常见的应用模块,并详细介绍了模块的应用方

    向。

    3.步骤清晰,说明详细

    在具体介绍模块功能的时候,为了让读者从开始就能知道这个模块

    的实现方法,本书还提供了详细的图例,说明模块是如何设计、如何实

    现以及如何应用到项目中的,并且在图例中稍显复杂的地方提供了详细

    的标注,让读者一看就明白整个模块的设计原理和实现手段。

    4.讲解通俗,步骤详细

    每个实例的制作步骤都以通俗易懂的语言阐述,并穿插讲解有关技

    巧性内容,在阅读时就像听课一样详细而贴切。读者只需要按照步骤操

    作,就可以轻松地完成一个模块的制作,这样不但掌握了开发的步骤,还掌握了开发的技巧。

    本书由陈冠军、马翠翠任主编,赵越、陈静任副主编。

    编者

    2013年1月第1章 Web基础知识

    随着Internet技术的普及,Web应用变得非常广泛。因而,Web开发

    现在也成为一个热门行业。学习Web开发首先需要掌握Internet基础、Web结构、HTML等基础知识,本章将依次讲解这些内容。1.1 Internet基础

    随着新闻媒体对“信息高速公路”的宣传和介绍的增多,相信大多数

    人都曾接触过一些有关Internet的报道,对Internet这一词不会陌生。但

    如果要解释清楚它到底是什么,就必须从它的起源和发展说起。

    1.1.1 Internet的起源

    Internet是在美国较早的军用计算机网ARPAnet的基础上经过不断发

    展变化而形成的。Internet的发展主要分为以下几个阶段。

    1.Internet的雏形形成阶段

    1969年,美国国防部高级研究计划局(Advanced Research Projects

    Agency,ARPA)开始建立一个命名为ARPAnet的网络。当时建立这个

    网络的目的只是为了将美国的几个军事及研究机构的联系用计算机主机

    连接起来。人们普遍认为这就是Internet的雏形。

    发展Internet时,沿用了ARPAnet的技术和协议,而且在Internet正式

    形成之前,已经建立了以ARPAnet为主的国际网。这种网络之间的连接

    模式,也是随后Internet所用的模式。

    2.Internet的发展阶段

    美国国家科学基金会(NSF)在1985年开始建立NSFNET。NSF规

    划建立了15个超级计算中心及国家教育科研网,用于支持科研和教育的

    全国性规模的计算机网络NSFNET,并以此作为基础实现同其他网络的

    连接。NSFNET 成为 Internet 中主要用于科研和教育的主干部分,代替

    了ARPAnet的骨干地位。

    1989年,MILNET(由ARPAnet分离出来)实现和NSFNET连接后,就开始采用Internet这个名称。自此以后,其他部门的计算机网相继

    并入Internet,ARPAnet就宣告解散。

    3.Internet的商业化阶段

    20世纪90年代初,商业机构开始进入Internet,这使Internet开始了

    商业化的新进程,也成为Internet大发展的强大推动力。1995年,NSFNET停止运作,Internet已彻底商业化了。

    这种把不同网络连接在一起的技术的出现,使计算机网络的发展进

    入一个新的时期,形成由网络实体相互连接而构成的超级计算机网络,人们把这种网络形态称为Internet(因特网)。

    1.1.2 现在Internet的发展

    随着大量商业公司网络进入Internet,网上商业应用取得高速的发

    展,同时也使Internet能为用户提供更多的服务,使Internet迅速普及和

    发展起来。

    现在 Internet 已发展得更为多元化,不仅仅单纯为科研服务,正逐

    步进入人们日常生活的各个领域。近几年来,Internet在规模和结构上都

    有了很大的发展,已经发展成为一个名副其实的“全球网”。

    网络的出现,改变了人们使用计算机的方式,而 Internet 的出现,又改变了人们使用网络的方式。Internet使计算机用户不再被局限于分散

    的计算机上,同时,也使他们脱离了特定网络的约束。任何人只要进入

    了Internet,就可以利用网络中和各种计算机上的丰富资源。1.2 Web结构

    Web 结构也称为浏览器服务器(BS)结构,使用超文本传输协议

    (Hypertext Transport Procotocol,HTTP)传输数据,相比较客户端服

    务器(CS)结构有很多不同。本节将详细剖析一下Web应用程序的内

    部结构。

    1.2.1 HTTP简介

    在我们访问网站的时候,通常都会在浏览器的地址栏里输入网站地

    址,这个地址就是 URL (Uniform Resource Locator,统一资源定位系

    统)。当确定要访问这个网址的时候,浏览器就会通过HTTP从Web服

    务器上获取提取的网页代码,最终翻译成用户易读的页面文字、图片和

    多媒体等信息。

    例如,Microsoft官方的网址为http:www.Microsoft.com,其各个组

    成部分的含义如下。

    http::代表超文本传输协议,通知Microsoft.com服务器显示Web

    页,通常不用输入。

    www:代表一个Web(万维网)服务器。

    Microsoft.com:这是装有网页的服务器的域名或站点服务器的名

    称。

    Internet的基本协议是TCPIP,然而在TCPIP模型最上层的是应用层

    (Application Layer),它包含所有高层的协议。高层协议有文件传输

    协议(FTP)、电子邮件传输协议(SMTP)、域名系统服务

    (DNS)、网络新闻传输协议(NNTP)和超文本传输协议(HTTP)等。

    HTTP是用于从WWW服务器传输超文本到本地浏览器的传输协

    议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正

    确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分

    内容首先显示(如文本先于图形)等。这就是在浏览器中看到的网页地

    址都是以“http:”开头的原因。

    1.2.2 BS结构简介

    BS结构(BrowserServer结构)即浏览器服务器结构。它是随着

    Internet技术的兴起对CS结构的一种变化或者改进的结构。在这种结构

    下,用户工作界面通过WWW浏览器来实现,极少部分事务逻辑在前端

    (Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成

    所谓三层结构。这样就大大简化了客户端计算机载荷,减轻了系统维护

    与升级的成本和工作量,降低了用户的总体成本。

    以目前的技术看,局域网建立BS结构的网络应用,并通过

    InternetIntranet模式下数据库应用,相对来说易于把握,成本也是较低

    的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不

    同的接入方式(如LAN、WAN、InternetIntranet等)访问和操作共同的

    数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很

    安全。

    BS 结构最大的优点就是可以在任何地方进行操作而不用安装任何

    专门的软件。只要有一台能上网的计算机就能使用,客户端零维护。系

    统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密

    码,就可以使用了。它甚至可以在线申请,通过公司内部的安全认证

    (如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账

    号进入系统。1.2.3 CS结构简介

    CS结构(ClientServer结构)即客户服务器结构。其中,服务器通

    常采用高性能的PC、工作站或小型机,并采用大型数据库系统(如

    Oracle、Sybase、Informix或SQL Server),客户端需要安装专用的客户

    端软件。

    CS结构的优点是能充分发挥客户端PC的处理能力,很多工作可以

    在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快,其缺点主要有以下几个。

    (1)只适用于局域网。随着互联网的飞速发展,移动办公和分布

    式办公越来越普及,这需要我们的系统具有扩展性。这种远程访问方式

    需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。

    (2)客户端需要安装专用的客户端软件。首先是涉及安装的工作

    量,其次是任何一台计算机出问题(如病毒、硬件损坏)都需要进行安

    装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而

    是路程的问题。还有系统软件升级时,每一台客户机需要重新安装,其

    维护和升级成本非常高。

    (3)对客户端的操作系统一般也会有限制。可能适应于 Windows

    XP,但不能用于 Windows 8Vista,或者不适用于Microsoft公司新的操

    作系统等,更不用说Linux、UNIX等。

    1.2.4 BS结构与CS结构比较

    BS结构与CS结构可以从以下几方面进行比较。

    1.数据安全性比较

    由于CS结构软件的数据分布特性,客户端所发生的火灾、盗抢、地震、病毒、黑客等都成了可怕的数据杀手。另外,对于集团级的异地软件应用,CS结构的软件必须在各地安装多个服务器,并在多个服务

    器之间进行数据同步。如此一来,每个数据点上的数据安全都影响了整

    个应用的数据安全。所以,对于集团级的大型应用来讲,CS结构软件

    的安全性是令人无法接受的。对于 BS 结构的软件来讲,由于其数据集

    中存放于总部的数据库服务器,客户端不保存任何业务数据和数据库连

    接信息,也无须进行数据同步,所以这些安全问题也就自然不存在了。

    2.数据一致性比较

    在CS结构软件的解决方案里,对于异地经营的大型集团都采用各

    地安装区域级服务器,然后再进行数据同步的模式。每天必须在这些服

    务器同步完毕之后,总部才可得到最终的数据。由于局部网络故障造成

    个别数据库不能同步不说,即使同步上来,各服务器也不是一个时点上

    的数据,数据永远无法一致,不能用于决策。对于BS结构的软件来

    讲,其数据是集中存放的,客户端发生的每一笔业务单据都直接进入中

    央数据库,不存在数据一致性的问题。

    3.数据实时性比较

    在集团级应用里,CS结构不可能随时随地看到当前业务的发生情

    况,看到的都是事后数据;而BS结构则不同,它可以实时看到当前发

    生的所有业务,方便了快速决策,有效地避免了企业损失。

    4.数据溯源性比较

    由于 BS 结构的数据是集中存放的,所以总公司可以直接追溯到各

    级分支机构(分公司、门店)的原始业务单据,也就是说看到的结果可

    溯源。大部分 CS 结构的软件则不同,为了减少数据通信量,仅仅上传

    中间报表数据,在总部不可能查到各分支机构(分公司、门店)的原始

    单据。

    5.服务响应及时性比较

    企业的业务流程、业务模式不是一成不变的,随着企业不断发展,必然会不断调整。软件供应商提供的软件也不是完美无缺的,所以,对已经部署的软件产品进行维护、升级是正常的。CS结构软件由于其应

    用是分布的,需要对每一个使用结点进行程序安装,所以即使非常小的

    程序缺陷都需要很长的重新部署时间。重新部署时,为了保证各程序版

    本的一致性,必须暂停一切业务进行更新(即“休克更新”),其服务响

    应时间基本不可忍受。而BS结构的软件不同,其应用都集中于总部服

    务器上,各应用结点并没有任何程序,一个地方更新则全部应用程序更

    新,可以做到快速服务响应。

    6.网络应用限制比较

    CS结构软件仅适用于局域网内部用户或宽带用户(1Mbits以

    上)。而BS结构软件可以适用于任何网络结构(包括33.6kbits拨号入

    网方式),特别适于宽带不能到达的地方。

    1.2.5 Web系统的三层结构

    BS 系统常常采用如图 1-1 所示的多层结构,这种多层结构在层与

    层之间相互独立,任何一层的改变不会影响其他层的功能。在多层结构

    中,具有如下基本的三层结构。图1-1 Web系统的多层结构图

    (1)数据访问层:实现对数据的访问功能,如增加、删除、修

    改、查询数据。

    (2)业务逻辑层:实现业务的具体逻辑功能,如学生入学、退

    学、成绩管理等。

    (3)页面显示层:将业务功能在浏览器上显示出来,如分页显示

    学生信息等。

    除此之外,还可能具有其他的层次。特别是在业务逻辑层,常常需

    要根据实际情况增加层次,但总的原则是:每一层次都完成相对独立的

    系统功能。在开发过程中,需要在逻辑上清晰这三层分别实现的功能,并以此

    设计整个系统的实现以及管理整个系统的代码文件。不能把处于不同层

    次的文件混在一起,否则会造成系统逻辑上的混乱,使庞大的系统难于

    管理和维护,容易导致系统的失败。

    另外,在这三层基础之下,还有更为基础的工作,即数据库的设计

    模型。数据库的设计模型是整个系统的基础,一旦确定了数据库的结

    构,在开发过程中就不要轻易改变,否则会对后面的工作造成巨大的负

    担。1.3 网页构成技术——HTML

    1.3.1 HTML概述

    超文本标记语言(Hyper Text Markup Language,HTML)是为网页

    创建和其他可在网页浏览器中看到的信息设计的一种标记语言。HTML

    被用来结构化信息,如标题、段落、列表等,也可用来在一定程度上描

    述文档的外观和语义。由蒂姆·伯纳斯·李给出原始定义,由 IETF 用简

    化的SGML(标准通用标记语言)语法进行进一步发展的HTML后来成

    为国际标准,由万维网联盟(W3C)维护。

    包含HTML内容的文件最常用的扩展名是.html,但是像DOS这样的

    旧操作系统限制扩展名为最多3个字符,所以.htm扩展名也被使用。虽

    然现在使用得比较少一些了,但是.htm扩展名仍旧普遍被支持。编者可

    以用任何文本编辑器或所见即所得的HTML编辑器来编辑HTML文件。

    早期的HTML语法被定义成较松散的规则,以有助于不熟悉网络出

    版的人采用。网页浏览器接受了这个现实,并且可以显示语法不严格的

    网页。随着时间的流逝,官方标准渐渐趋于严格的语法,但是浏览器继

    续显示一些远称不上合乎标准的HTML。使用XML的严格规则的

    XHTML (可扩展超文本标记语言)是W3C计划中的HTML的接替者。

    虽然很多人认为它已经成为当前的HTML 标准,但是它实际上是一个独

    立的和 HTML 平行发展的标准。W3C 目前的建议是使用XHTML 1.1、XHTML 1.0或者HTML 4.01进行网络出版。

    1.3.2 HTML文件结构

    一个HTML文档由一系列的元素和标签组成。元素名不区分大小写。HTML用标签来规定元素的属性和它在文件中的位置。HTML超文

    本文档分为文档头和文档体两部分,在文档头里对这个文档进行了一些

    必要的定义,文档体中才是要显示的各种文档信息。

    下面是一个最基本的HTML文档的代码:

    

    一个简单的HTML示例<TITLE><HEAD><br/><br/>     <BODY><br/><br/>     <CENTER><br/><br/>     <H1>这是标题<H1><br/><br/>     <BR><br/><br/>     <HR><br/><br/>     <FONT SIZE= 7 COLOR= red><br/><br/>     这是主体内容<FONT><CENTER><BODY><HTML><br/><br/>     <HTML><HTML>在文档的最外层,文档中的所有文本和 html 标<br/><br/>     签都包含在其中,它表示该文档是以HTML编写的。<br/><br/>     <HEAD><HEAD>是HTML文档的头部标签,在浏览器窗口中,头<br/><br/>     部信息是不被显示在正文中的。在此标签中可以插入其他标记,用以说<br/><br/>     明文件的标题和整个文件的一些公共属性。<TITLE><TITLE>是嵌套在<HEAD>头部标签中的,标签之间的文<br/><br/>     本是文档标题,它被显示在浏览器窗口的标题栏。<br/><br/>     <BODY><BODY>标记一般不省略,标签之间的文本是正文,是在浏览器窗口中要显示的页面内容。<br/><br/>     以上的元素是HTML文件结构中必须具备的,剩下的则可有可无。<br/><br/>     常见的HTML元素及其描述说明如表1-1所示。<br/><br/>     表1-1 常用的HTML元素及其描述小结<br/><br/>     本章从整体上介绍了Web开发的基础知识,包括了Internet基础、Web结构概述和HTML基础知识。其中,读者需要重点理解 BS 结构的<br/><br/>     原理以及 HTML 的文件结构,并可以熟练地读写HTML代码,这些都是<br/><br/>     Web开发中最基本的知识。习题<br/><br/>     1.BS结构即______和______结构。<br/><br/>     2.在多层体系结构中,基本的三层结构是______、______和<br/><br/>     ______。<br/><br/>     3.BS结构最大的优点是什么?CS结构的缺点是什么?<br/><br/>     4.使用HTML代码,编写一个HTML文档,使之在页面中输出一<br/><br/>     个“Hello World”字符串。上机指导<br/><br/>     HTML是为网页创建和其他可在网页浏览器中看到的信息设计的一<br/><br/>     种置标语言。一个HTML文档是由一系列的元素和标签组成的。本次上<br/><br/>     机实验主要内容就是对HTML文档的进一步熟悉。<br/><br/>     实验:输出一个字符串<br/><br/>     实验目的<br/><br/>     巩固知识点——HTML文件结构。HTML用标签来规定元素的属性<br/><br/>     和它在文件中的位置。<br/><br/>     实现思路<br/><br/>     在1.3.2小节中讲述了如何创建一个最基本的HTML文档页面。在<br/><br/>     HTML代码中,使用多个标签规定节显示位置,如“<BR>”、“<CENTER>”等。<br/><br/>     少量改动该例子,在页面的中心,输出一个颜色为浅蓝色,字号为<br/><br/>     14的字符串“Hello World”,其运行结果如图1-2所示。图1-2 输出一个简单的字符串第2章 ASP.NET概述<br/><br/>     .NET是Microsoft公司提出的新一代程序开发框架,而ASP.NET属<br/><br/>     于.NET框架中的一部分,可以使用多种语言开发,主要用于创建Web应<br/><br/>     用程序、网站及Web服务。本章将讲解ASP.NET中的各种基础知识。2.1 .NET开发<br/><br/>     ASP.NET技术属于.NET框架的组成部分之一。在学习ASP.NET之<br/><br/>     前,应该先了解一下.NET框架以及.NET框架和ASP.NET之间的关系。<br/><br/>     2.1.1 .NET框架简介<br/><br/>     互联网的出现已经彻底改变了人类的生活方式。从静态页面到能够<br/><br/>     与用户交互的动态页面,互联网已经能够实现很强大的功能。Web应用<br/><br/>     系统能够根据用户的要求,动态处理数据,向用户提供个性化的服务。<br/><br/>     但是,现在的浏览器页面各自独立,互不相干。在互联网中,信息<br/><br/>     被存储在 Web 服务器内,用户的所有操作都依靠它。这样无法让不同<br/><br/>     的网页互相合作,传递有意义的信息,提供更深层次的服务。<br/><br/>     于是,Microsoft 公司梦想把整个互联网变成一个操作系统,用户在<br/><br/>     互联网上开发应用程序,使用互联网上的所有应用,就好像在自己办公<br/><br/>     室里的PC上一样,感觉不到互联网的存在。Microsoft公司希望“Code<br/><br/>     Once,Run Anywhere”,即写好一个程序,然后能够将其用之于四海,这就是.NET 的目标。整体上,.NET Framework框架如图2-1所示。图2-1 .NET Framework框架<br/><br/>     在图2-1中,.NET Framework主要分为4部分:通用语言开发环<br/><br/>     境、.NET基础类库、.NET开发语言和Visual Studio.NET集成开发环境。<br/><br/>     1.通用语言开发环境<br/><br/>     开发程序时,如果使用符合通用语言规范(Common Language<br/><br/>     Specification)的开发语言,那么所开发的程序将可以在任何有通用语<br/><br/>     言开发环境(Common Language Runtime)的操作系统下执行,包括<br/><br/>     Windows 7、Windows CE、Windows NTXP等。<br/><br/>     2..NET基础类库<br/><br/>     简单来说,.NET基础类库(Basic Class Library)是一套函数库,以<br/><br/>     结构严密的树状层次组织,并由命名空间(Namespace)和类(Class)<br/><br/>     组成,功能强大,使用简单,并具有高度的可扩展性。<br/><br/>     3..NET开发语言.NET是多语言开发平台,所谓的.NET开发语言指的是符合通用语<br/><br/>     言规范(Common Language Specification)的程序语言。目前,Microsoft 公司提供 Visual Basic.NET、C、C++以及 Java Script.NET,其他厂商提供了很多对.NET的语言支持,包括APL、COBOL、Pascal、Eiffel、Haskell、ML、Oberon、Perl、Python、Scheme、Smalltalk等。<br/><br/>     4.Visual Studio.NET 集成开发环境<br/><br/>     .NET集成开发环境Visual Studio.NET是开发.NET应用的利器,它秉<br/><br/>     承了Microsoft IDE一贯的易用性,功能非常强大。<br/><br/>     2.1.2 ASP.NET与.NET框架的关系<br/><br/>     ASP.NET是.NET框架中的一个应用模型,运行于具有.NET框架环<br/><br/>     境的服务器中。ASP.NET可以使用多种语言编写,然后被编译成字节码<br/><br/>     文件,运行于.NET框架中。<br/><br/>     2.1.3 ASP、ASP.NET、PHP、JSP比较<br/><br/>     目前在Web 开发中,除了ASP.NET 技术外,常用的技术还有<br/><br/>     ASP(Active Server Pages)、PHP(Hypertext Preprocessor)和<br/><br/>     JSP(Java Server Pages)。<br/><br/>     1.ASP<br/><br/>     ASP是一个Web服务器端的开发环境。开发人员利用它开发动态<br/><br/>     的、交互的和高性能的Web服务应用程序。ASP采用脚本语言VB<br/><br/>     Script(Java Script)作为自己的开发语言。<br/><br/>     2.PHP<br/><br/>     PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用<br/><br/>     C、Java和Perl语言的语法,并结合PHP自己的特性,使Web开发者能够<br/><br/>     快速地写出动态生成页面。PHP支持目前绝大多数数据库,并且它是完全免费与开源的。<br/><br/>     3.JSP<br/><br/>     JSP是Sun公司推出的新一代站点开发语言,它完全解决了目前<br/><br/>     ASP、PHP的一个通病——脚本级执行。JSP可以在Servlet和JavaBean的<br/><br/>     支持下,完成功能强大的站点程序。<br/><br/>     ASP、ASP.NET、PHP、JSP 都提供在 HTML 代码中混合某种程序<br/><br/>     代码,由语言引擎解释执行程序代码的能力。但JSP代码被编译成<br/><br/>     Servlet并由Java虚拟机解释执行。这种编译操作仅在对JSP页面的第一次<br/><br/>     请求时发生。<br/><br/>     在 ASP、ASP.NET、PHP、JSP 环境下,HTML 代码主要负责描述<br/><br/>     信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面<br/><br/>     只依赖于Web服务器,而ASP、ASP.NET、PHP、JSP页面需要附加的语<br/><br/>     言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML<br/><br/>     代码中,然后一起发送给浏览器。ASP、ASP.NET、PHP、JSP 都是面<br/><br/>     向 Web 服务器的技术,客户端浏览器不需要任何附加的软件支持。2.2 开发工具Visual Studio 2010概述<br/><br/>     Visual Studio 2010是Microsoft公司发布的一个集成开发工具,主要<br/><br/>     用来开发.NET平台的各种应用。本节将详细讲述Visual Studio 2010的安<br/><br/>     装配置。<br/><br/>     2.2.1 Visual Studio 2010简介<br/><br/>     Visual Studio 2010是一套完整的开发工具集,用于生成ASP.NET<br/><br/>     Web应用程序、XML Web Services、桌面应用程序和移动应用程序。<br/><br/>     Visual Basic、Visual C++、Visual C和Visual J全都使用相同的集成开<br/><br/>     发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决<br/><br/>     方案。另外,这些语言利用了.NET Framework的功能,通过此框架可使<br/><br/>     用简化ASPWeb应用程序和XML Web Services开发的关键技术。<br/><br/>     2.2.2 使用Visual Studio 2010<br/><br/>     安装完Visual Studio 2010后,可以在“开始”菜单中找到其快捷方<br/><br/>     式。单击Visual Studio 2010的快捷方式,打开Visual Studio 2010的开发<br/><br/>     界面,如图2-2所示。图中中间的主体部分是代码编辑器,同时还可以<br/><br/>     切换到设计视图;左侧是“工具箱”面板,其中列出了常用的控件,可以<br/><br/>     直接拖曳到主界面中使用;右上方是“解决方案资源管理器”面板,显示<br/><br/>     的是当前活动的解决方案以及下面的工程文件。图2-2 Visual Studio 2010开发界面<br/><br/>     在“解决方案资源管理器”面板的下面是“属性”面板,在这里可以更<br/><br/>     改选中控件的属性值。<br/><br/>     单击菜单“工具”|“选项”命令,出现“选项”对话框,如图2-3所示。在<br/><br/>     对话框中,可以对诸多编辑器的属性进行编辑,如环境、项目和解决方<br/><br/>     案、源代码管理、文本编辑器、调试、数据库工具等。图2-3 “选项”对话框<br/><br/>     2.2.3 配置IIS<br/><br/>     如果是开发简单的ASP.NET程序,用Visual Studio 2010已经足够。<br/><br/>     如果开发HTTP程序,则需要先配置好Windows系统中的IIS服务器(设<br/><br/>     置好虚拟目录)。Windows系统默认没有安装Internet信息服务(IIS),其组件包含在系统光盘中。其安装步骤如下。<br/><br/>     (1)将Windows系统光盘插入到光驱中。<br/><br/>     (2)单击“开始”|“控制面板”|“程序和功能”|“打开或关闭Windows功<br/><br/>     能”命令,弹出“Windows功能”对话框,如图2-4所示。勾选“Internet信息<br/><br/>     服务”选项,单击“确定”按钮。<br/><br/>     完成安装之后,系统会创建一个默认的站点。打开浏览器,在地址<br/><br/>     栏中输入“http:localhost”,会打开一个“IIS 7文档”,如图2-5所示。<br/><br/>     我们还可以自己创建一个虚拟目录,其创建步骤如下。<br/><br/>     (1)在硬盘中的某个路径下创建一个目录,如“Z:\TestWeb\”,可<br/><br/>     以在此目录下编写网站的代码文件。图2-4 Windows组件图2-5 Microsoft Internet信息服务7文档<br/><br/>     (2)右键单击“我的计算机”图标,在上下文菜单中选择“管理”命<br/><br/>     令,以此展开左边树结构的结点“服务和应用程序”|“Internet信息服务<br/><br/>     (IIS)管理器”。或者单击“控制面板”|“管理工具”|“Internet信息服务”命<br/><br/>     令,进入IIS管理页面,如图2-6所示。图2-6 IIS管理页面<br/><br/>     (3)右键单击“Default Web Site”,在上下文菜单中选择“添加虚拟<br/><br/>     目录”命令,出现“添加虚拟目录”对话框,如图2-7所示。<br/><br/>     (4)在“别名”文本框中输入要创建的虚拟目录的名字,如“TestWeb”。单击“…”按钮,选择刚才创建的目录“Z:\TestWeb\”。这<br/><br/>     时,虚拟目录的实际路径已经指向了“Z:\TestWeb\”,如图2-8所示。<br/><br/>     (5)单击“确定”按钮,完成虚拟目录的创建。图2-7 添加虚拟目录<br/><br/>     图2-8 虚拟目录别名和路径<br/><br/>     创建完虚拟目录之后,需要测试一下刚才创建的是否有效。测试的<br/><br/>     方法就是通过浏览器试图访问一个目录下的静态页面,具体步骤如下。(1)在目录“Z:\TestWeb\”下创建一个静态页面文件test.htm。代码<br/><br/>     如下:<br/><br/>     <html><br/><br/>     <head><title>测试页面<title><head><br/><br/>     <body><br/><br/>     这是一个测试IIS服务器的页面。<body><html><br/><br/>     (2)打开浏览器,在地址栏中输入地<br/><br/>     址“http:localhostTestWebtest.htm”。访问结果如图2-9所示。<br/><br/>     图2-9 测试虚拟目录页面2.3 第一个ASP.NET程序<br/><br/>     本节将通过一个简单的ASP.NET程序使读者能够了解如何使用控件<br/><br/>     创建一个ASP.NET程序。<br/><br/>     2.3.1 搭建Web项目<br/><br/>     创建Web项目或者网站通常有两种方式:HTTP和文件系统。使用<br/><br/>     HTTP方式创建网站需要安装IIS服务;使用文件系统创建网站不必安装<br/><br/>     IIS服务,因为Visual Studio.NET 2010本身自带了一个可以运行ASP.NET<br/><br/>     程序的服务,当程序执行或者调试的时候,这个服务就会自动启动。<br/><br/>     1.使用HTTP方式创建Web网站<br/><br/>     使用HTTP方式创建Web网站的具体步骤如下。<br/><br/>     (1)进入 IIS 服务管理页面,添加一个虚拟目录,命名<br/><br/>     为“TestWeb”(如果前面已经存在此虚拟目录,这里无须重复添加)。<br/><br/>     (2)启动Visual Studio.NET 2010。<br/><br/>     (3)单击主窗口上的“文件”|“新建”|“网站”菜单,弹出“新建网<br/><br/>     站”对话框。<br/><br/>     (4)选择“ASP.NET 空网站”项,在下侧“Web 位置”下拉框中选<br/><br/>     择“HTTP”,然后输入“http:localhostTestHelloWorld_ASPNET”,如图<br/><br/>     2-10所示。图2-10 使用HTTP方式创建网站<br/><br/>     (5)单击“确定”按钮,等待Visual Studio.NET创建新的工程成功。<br/><br/>     2.使用文件系统的方式创建Web网站<br/><br/>     使用文件系统方式创建Web网站的具体步骤如下。<br/><br/>     (1)启动Visual Studio.NET 2010。<br/><br/>     (2)单击主窗口上的“文件”|“新建”|“网站”菜单,弹出“新建网<br/><br/>     站”对话框。<br/><br/>     (3)选择“ASP.NET 空网站”项,在下侧“Web 位置”下拉框中选<br/><br/>     择“文件系统”,然后输入“Z:\TestWeb\HelloWorld_ASPNET”,如图2-11<br/><br/>     所示。<br/><br/>     (4)单击“确定”按钮,等待Visual Studio.NET创建新的工程成功。图2-11 使用文件系统方式创建网站<br/><br/>     2.3.2 添加代码<br/><br/>     创建完网站之后就可以开始添加代码,其具体步骤如下。<br/><br/>     (1)查看IDE中的“解决方案资源管理器”面板,如图2-12所示。右<br/><br/>     键单击项目名称,选择“添加新项”命令,在打开的对话框中选择“Web<br/><br/>     窗体”,将其改名为“HelloWorld.aspx”。<br/><br/>     (2)查看主窗口,此时自动生成一个aspx页面,单击页面左下方<br/><br/>     的“源”标签,然后将代码:<title> <title><br/><br/>     改为以下代码:<title> Hello World,ASPNET.<title><br/><br/>     (3)在页面显示时,页面的标题将为“Hello World,ASPNET.”。<br/><br/>     (4)单击页面左下方的“设计”标签,然后单击主窗口左侧的“工具<br/><br/>     箱”隐藏面板,默认出现标准Web控件。双击“Label”控件,修改其属性。<br/><br/>     ID:lblDisplay。<br/><br/>     Text:空。<br/><br/>     BackColor:Silver。<br/><br/>     同样,双击“Button”控件,并修改其属性。<br/><br/>     ID:btnShow。<br/><br/>     Text:显示。<br/><br/>     最后效果如图2-13所示。<br/><br/>     图2-12 “解决方案资源管理器”面板<br/><br/>     图2-13 添加Label和Button控件后的aspx页面(5)双击“显示”按钮,进入代码窗口(通过主窗口上侧的标签可<br/><br/>     以在代码窗口和窗体窗口间进行切换),可以看到Visual Studio.NET已<br/><br/>     经自动生成了很多代码。进入代码窗口后光标自动位于方<br/><br/>     法“btnShow_Click( )”内部(即单击“显示”按钮会触发这个方法),在光<br/><br/>     标处添加如下代码:<br/><br/>     this.lblDisplay.Text=Hello World, ASP.NET.;<br/><br/>     2.3.3 分析代码<br/><br/>     在ASP.NET应用程序中,默认情况下,HTML页面和C代码是被分<br/><br/>     开保存于两个文件中的。HTML页面存放在扩展名是.aspx的文件中,C<br/><br/>     代码存放在扩展名是.cs的文件中。所以,在新建一个Web页面后,会自<br/><br/>     动生成两个文件。<br/><br/>     在HelloWorld.aspx文件中,最上面的代码如下:<br/><br/>     <%@ Page Language=C AutoEventWireup=true<br/><br/>     CodeFile=HelloWorld.aspx.cs<br/><br/>     Inherits= HelloWorld %><br/><br/>     代码的说明如下。<br/><br/>     Language:后台代码所使用的语言,这里使用的是C。<br/><br/>     AutoEventWireup:是否自动启用页面事件,默认是启用。<br/><br/>     CodeFile:与此HTML页面关联的后台代码页面的文件名。<br/><br/>     Inherits:后台代码的类名,这里是HelloWorld。<br/><br/>     在后台的 HelloWorld.aspx.cs 文件中,自动生成的代码大体有两部<br/><br/>     分。一个是最上面的使用using关键字的如下几行代码:<br/><br/>     using System;<br/><br/>     using System.Collections.Generic;<br/><br/>     using System.Linq;using System.Web;<br/><br/>     using System.Web.UI;<br/><br/>     using System.Web.UI.WebControls;;<br/><br/>     这些代码引用了相应的命名空间,其实有些可以不用,这些等读者<br/><br/>     有一定的基础后再学习。<br/><br/>     另一个自动生成的代码就是方法Page_Load( )。这个方法是页面被<br/><br/>     加载的时候调用的,可以说是页面执行的入口。<br/><br/>     2.3.4 测试代码<br/><br/>     完成添加代码后,就要运行并测试代码的准确性。测试代码的具体<br/><br/>     步骤如下。<br/><br/>     (1)在“资源管理器”中,右键单击“HelloWorld.aspx”文件,在快捷<br/><br/>     菜单中单击“设为起始页”命令。<br/><br/>     (2)使用快捷键Ctrl+F5启动程序后,结果如图2-14所示,单击“显<br/><br/>     示”按钮,在标签中就会出现结果。<br/><br/>     图2-14 HelloWorld_ASPNET运行结果<br/><br/>     (3)查看在目录“E:\TestWeb\HelloWorld_ASPNET”下的工程文件,将会发现工程文件夹“HelloWorld_ASPNET”。其中,.aspx:页面文件;<br/><br/>     .cs:代码文件。<br/><br/>     至此,第一个ASP.NET应用就完成了。小结<br/><br/>     本章全面详细地介绍了 ASP.NET 以及它和.NET 框架的关系,还讲<br/><br/>     解了开发工具 Visual Studio 2010 的配置。最后,通过创建一个简单的<br/><br/>     ASP.NET 应用程序,使读者更快速地掌握如何使用开发工具创建<br/><br/>     ASP.NET Web应用程序。习题<br/><br/>     1..NET Framework主要分为4个部分:______、______、______和<br/><br/>     ______。<br/><br/>     2.下面描述不正确的是______。<br/><br/>     A..NET是多语言开发平台<br/><br/>     B..NET类库由命名空间和类组成<br/><br/>     C.在Windows系统中必须安装.net framework才可以运行ASP.NET应<br/><br/>     用程序<br/><br/>     D.ASP.NET目前只能运行在Windows操作系统中<br/><br/>     3.列举最常用的4种动态网页语言。<br/><br/>     4.使用Visual Studio.NET 2010创建一个简单的Web网站。上机指导<br/><br/>     ASP.NET是包含在.NET框架中的一项技术,主要用于构建Web应用<br/><br/>     程序和以XML为基础的Web服务。<br/><br/>     实验一:输出一个字符串<br/><br/>     实验目的<br/><br/>     巩固知识点——标签控件。标签控件用于显示文本。<br/><br/>     实现思路<br/><br/>     在 2.4 节中讲述了如何构建一个简单的 ASP.NET 应用程序。在本<br/><br/>     例中,使用了两个控件:一个是标签控件,用于显示文本;另一个是按<br/><br/>     钮控件,用于响应单击事件。当用户单击按钮的时候,就会响应按钮的<br/><br/>     单击事件,输出一个字符串。<br/><br/>     少量改动该例子,就可以输出一个自定义的字符串,改动后的运行<br/><br/>     结果如图2-15所示。<br/><br/>     图2-15 输出一个简单的字符串实验二:交互式输出字符串<br/><br/>     实验目的<br/><br/>     巩固知识点——文本框控件。文本框控件用于输入文本。<br/><br/>     实现思路<br/><br/>     本实验在实验一的基础上,增加了一个文本框控件。当用户单击事<br/><br/>     件的时候,在标签中显示用户在文本框控件中输入的内容。其具体的实<br/><br/>     现步骤如下。<br/><br/>     (1)创建一个ASP.NET网站。<br/><br/>     (2)切换到“设计”视图,从工具箱面板的“标准”组中,分别拖放 3<br/><br/>     个控件到页面中,3个控件是:TextBox控件、Label控件、Button控件。<br/><br/>     (3)双击按钮控件,自动生成单击事件的代码。在后台页面中生<br/><br/>     成的单击事件的代码如下:<br/><br/>     protected void Button1_Click(object sender, EventArgs e)<br/><br/>     {<br/><br/>     }<br/><br/>     (4)在单击事件的方法中,添加代码,使标签控件显示用户在文<br/><br/>     本框中输入的内容。代码如下:<br/><br/>     protected void Button1_Click(object sender, EventArgs e)<br/><br/>     {<br/><br/>     Label1.Text = TextBox1.Text;<br/><br/>     }<br/><br/>     (5)按 Ctrl+F5 快捷键运行代码,运行结果如图 2-16所示。图2-16 交互式输出字符串运行结果第3章 ASP.NET常用控件<br/><br/>     本章重点介绍ASP.NET中一些常用的服务器控件,如文本控件、按<br/><br/>     钮控件、单选按钮、复选按钮等。本章的后续部分结合具体实例,主要<br/><br/>     讲解用户登录系列控件的使用。登录验证模块的流程如图3-1所示。<br/><br/>     图3-1 登录验证模块流程图3.1 开发站点前的配置<br/><br/>     在ASP.NET中新增加了一个工具:站点安全配置。通过此工具可以<br/><br/>     配置站点的一些公共属性,如验证类型等。本节将详细介绍此工具的使<br/><br/>     用,开发站点前的部署流程如图3-2所示。<br/><br/>     图3-2 开发站点前的部署流程图<br/><br/>     3.1.1 创建Web站点<br/><br/>     在Visual Studio 2010中,项目不再以Windows应用和Web应用来称<br/><br/>     呼,而是被称为“项目”和“网站”。现在重点介绍如何创建一个网站,具<br/><br/>     体步骤如下。<br/><br/>     (1)打开Visual Studio 2010,单击“文件”|“新建”|“网站”命令,打<br/><br/>     开Visual Studio 2010的“新建网站”对话框,如图3-3所示。它主要分为模<br/><br/>     板区和配置区。图3-3 Visual Studio 2010的“新建网站”对话框<br/><br/>     (2)在配置区内可以为网站命名,本例将网站命名<br/><br/>     为“UserLogin”。<br/><br/>     (3)单击“确定”按钮,打开空网站的默认工作界面,因为默认情<br/><br/>     况下只有一个 web.config配置文件,为了操作方便,我们每次都要先添<br/><br/>     加一个Default.aspx页面,如图3-4所示。图3-4 网站的默认工作界面<br/><br/>     生成页面“Default.aspx”的同时,还会有一个代码文<br/><br/>     件“Default.aspx.cs”,这两个文件的地址在同一个目录下。至此就完成了<br/><br/>     一个简单网站的创建。<br/><br/>     3.1.2 ASP.NET配置文件<br/><br/>     ASP.NET配置数据存储在XML文本文件中,每一个XML文本文件<br/><br/>     都命名为web.config。<br/><br/>     新建一个Web站点或者项目后,默认情况下会在根目录自动创建一<br/><br/>     个web.config文件,包括默认的配置设置,所有的子目录都继承它的配<br/><br/>     置设置。如果要修改子目录的配置设置,可以在该子目录下新建一个<br/><br/>     web.config文件。它可以提供除了从父目录继承的配置信息以外的配置<br/><br/>     信息,也可以重写或修改父目录中定义的设置。<br/><br/>     所有的ASP.NET配置信息都驻留在web.config文件中的configuration<br/><br/>     元素中。3.1.3 使用站点安全工具配置身份验证模式<br/><br/>     站点安全配置工具主要用于管理站点的安全,其功能主要有配置身<br/><br/>     份验证模式和设置数据库引擎等。身份验证模式主要是让系统了解该从<br/><br/>     哪里加载用户数据。ASP.NET主要提供两种验证模式:Windows验证和<br/><br/>     Forms验证。配置步骤如下。<br/><br/>     (1)打开上节创建的网站“UserLogin”。<br/><br/>     (2)单击“网站”|“ASP.NET 配置”命令,打开“ASP.NET Web 应用<br/><br/>     程序管理”窗口,如图3-5所示。<br/><br/>     图3-5 “ASP.NET Web应用程序管理”窗口<br/><br/>     (3)单击“安全”链接,打开应用程序的安全设置界面,如图3-6所<br/><br/>     示。此界面主要有5个主要功能:选择身份验证类型、依据向导配置安<br/><br/>     全性、用户管理、角色管理和访问规则管理。图3-6 配置工具中安全设置界面<br/><br/>     (4)单击“选择身份验证类型”链接,打开验证类型界面,如图3-7<br/><br/>     所示。根据两个验证类型的介绍可以看出,通常在局域网的应用中使<br/><br/>     用“Windows”验证,登录用户多为机器中的用户组。在Internet中使<br/><br/>     用“Forms”验证,登录用户为存储在数据库中的用户信息。本例以网站<br/><br/>     应用为目的,所以选择“通过Internet”选项。图3-7 身份验证界面<br/><br/>     (5)单击“完成”按钮,系统返回安全设置界面,关闭整个工具窗<br/><br/>     口。<br/><br/>     (6)此时并没有生成配置文件“web.config”。为了能让系统自动生<br/><br/>     成配置文件并进行合理配置,按F5键运行程序,系统弹出一个对话框,如图3-8所示。图3-8 “未启用调试”提示对话框<br/><br/>     (7)选择第一项,单击“确定”按钮,系统自动在“解决方案资源管<br/><br/>     理器”中生成一个“web.config”配置文件。<br/><br/>     (8)关闭运行的页面,回到Visual Studio 2010工作界面,打开根<br/><br/>     目录下的“web.config”文件,会发现里面只有一个配置,就是身份验证<br/><br/>     的类型,具体代码如下:<br/><br/>     <?xml version=1.0?><br/><br/>     <!--<br/><br/>     有关如何配置 ASP.NET 应用程序的详细信息,请访问<br/><br/>     http:go.microsoft.comfwlink?LinkId=169433--><br/><br/>     <configuration><br/><br/>     <system.web><br/><br/>     <authentication mode=Forms ><br/><br/>     <compilation debug=true targetFramework=3.0><system.web><configuration>3.1.4 配置站点的数据存储方式<br/><br/>     上一小节中使用了身份验证模式来确定用户数据的来源,本小节通<br/><br/>     过配置数据存储方式来确定用户信息如何保存,配置步骤如下。<br/><br/>     (1)在Visual Studio 2010的工作界面中,单击“网站”|“ASP.NET配<br/><br/>     置”命令,打开“ASP.NET Web应用程序管理”窗口。<br/><br/>     (2)单击“提供程序”链接,转到提供程序界面,如图3-9所示。<br/><br/>     (3)默认的提供程序是“AspNetSqlProvider”,此提供程序将数据<br/><br/>     保存在 ASP.NET 自带的数据库中,数据库名为“ASPNETDB”。所有的<br/><br/>     用户信息、个性化信息和基本配置等都保存在此数据库中。<br/><br/>     图3-9 提供程序配置界面3.1.5 定制自己的数据存储方式<br/><br/>     默认情况下,.NET提供了默认数据库的SQL提供程序,开发人员也<br/><br/>     可以根据站点的需要,用自己的数据库保存配置信息。具体操作步骤如<br/><br/>     下。<br/><br/>     (1)首先在SQL Server 2008下创建一个自己的数据库,命名<br/><br/>     为“TestProvider”。<br/><br/>     (2)数据库中没有任何表,ASP.NET包括一个名为<br/><br/>     aspnet_regsql.exe 的命令行实用工具,可以提供向导的方式自定义数据<br/><br/>     保存地址。<br/><br/>     (3)单击 Windows 系统的“开始”|“所有程序”|“Visual Studio<br/><br/>     2010”|“Visual Studio Tools”|“Visual Studio 2010命令提示”命令。<br/><br/>     ( 4 )在打开的 DOS 窗口中输入“aspnet_regsql.exe”,用来配置自<br/><br/>     己的数据库。此时系统打开一个向导窗口,如图3-10所示。图3-10 “ASP.NET安装SQL Server安装向导”窗口<br/><br/>     (5)单击“下一步”按钮,打开选择安装选项界面,如图3-11所<br/><br/>     示。图3-11 选择安装选项界面<br/><br/>     (6)选择第一项“为应用程序服务配置SQL Server”,单击“下一<br/><br/>     步”按钮,打开选择服务器和数据库界面,如图3-12所示。图3-12 选择服务器和数据库界面<br/><br/>     (7)在“服务器”文本框中输入自己机器的注册实例名,数据库选<br/><br/>     择自己创建的“TestProvider”。单击“下一步”按钮,出现确认界面,如图<br/><br/>     3-13所示。图3-13 确认界面<br/><br/>     (8)单击“下一步”按钮,出现完成界面,如图3-14所示。图3-14 完成界面<br/><br/>     (9)单击“完成”按钮,返回到SQL Server数据库中。打<br/><br/>     开“TestProvider”数据库中的表,会发现所有的表全都是以“aspnet_”开头<br/><br/>     的,这些表用来存储用户的一些个性信息。<br/><br/>     (10)创建完成后还需要修改配置文件web.config,让系统知道数<br/><br/>     据库的提供者发生了变化。在“configuration”节点下添加代码如下:<br/><br/>     <connectionStrings><br/><br/>     <remove name=LocalSqlServer><br/><br/>     <!--数据库连接信息--><br/><br/>     <add name=LocalSqlServer<br/><br/>     connectionString=Data Source=localhost;<br/><br/>     Initial Catalog=TestProvider;Integrated Security=True<br/><br/>     providerName=System.Data.SqlClient><connectionStrings><br/><br/>     这样就可以使用自己的数据库来保存站点内所有的数据资料了,无<br/><br/>     论是使用系统工具创建用户还是角色,都会保存在自己的数据库中。3.2 ASP.NET控件概述<br/><br/>     之所以现在ASP.NET的开发方便和快捷,关键是它有一组强大的控<br/><br/>     件库,包括HTML控件、HTML服务器控件、Web服务器控件、Web用<br/><br/>     户控件、Web自定义控件等。<br/><br/>     3.2.1 HTML控件<br/><br/>     HTML 控件就是我们通常的说的 HTML 语言,它不能在服务器端<br/><br/>     控制,只能在客户端通过JavaScript和VBScript等程序语言来控制。<br/><br/>     下面的示例代码就是一个HTML的按钮控件,代码如下:<br/><br/>     < input type=button id=btn value=button><br/><br/>     下面使用HTML客户端控件创建一个简单的示例,该示例使用<br/><br/>     HTML的按钮控件。当单击按钮的时候,会弹出一个提示框。具体步骤<br/><br/>     如下。<br/><br/>     (1)打开Visual Studio 2010集成开发环境,单击“新建”|“网站”命<br/><br/>     令,弹出“新建网站”对话框,如图3-15所示。<br/><br/>     (2)在“Web位置”选项中,选择“文件系统”和网站创建的本地系统<br/><br/>     目录“Z:\TestWeb\WebSite2”。图3-15 “新建网站”对话框<br/><br/>     (3)单击“确定”按钮,进入编写代码的主窗口,同时添加一个<br/><br/>     Default.aspx 页面文件,并自动生成Default.aspx.cs后台代码文件。在<br/><br/>     Default.aspx文件中,自动生成了一个页面框架代码,其代码如下:<br/><br/>     <%@ Page Language=C AutoEventWireup=true<br/><br/>     CodeFile=Default.aspx.cs<br/><br/>     Inherits=_Default %><br/><br/>     <!DOCTYPE html PUBLIC -W3CDTD XHTML 1.0<br/><br/>     TransitionalEN<br/><br/>     http:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd><br/><br/>     <html xmlns=http:www.w3.org1999xhtml ><br/><br/>     <head runat=server><title> <title><head><br/><br/>     <body><br/><br/>     <form id=form1 runat=server><div><div><form><body><html><br/><br/>     (4)打开“工具箱”面板(默认布局的位置在左侧)的“HTML”标<br/><br/>     签,把“Input (Button)”按钮控件拖放到主窗口中。选中按钮控件,打<br/><br/>     开“属性”面板,如图 3-16 所示。修改“Value”项的值为“单击”。修改后<br/><br/>     的“属性”面板如图3-17所示。<br/><br/>     图3-16 修改前的“属性”面板图3-17 修改后的“属性”面板<br/><br/>     (5)切换到主窗口的“源”视图,在<div>标签中已经自动生成了一<br/><br/>     行代码,代码如下:<br/><br/>     <body><br/><br/>     <form id=form1 runat=server><br/><br/>     <div><br/><br/>     <input id=Button1 type=button value=单击 ><div><form><body><br/><br/>     (6)在按钮控件中增加单击事件onclick,代码如下:<input id=Button1 type=button value=单击 onclick=btn_Click ><br/><br/>     (7)在<head>标签中,增加JavaScript事件函数btn_Click( )。代码<br/><br/>     如下:<br/><br/>     <head runat=server><title>无标题页<title><br/><br/>     <script language=javascript type=textjavascript><br/><br/>     function btn_Click( )<br/><br/>     {<br/><br/>     弹出提示框<br/><br/>     alert('测试HTML控件!');<br/><br/>     }<script><head><br/><br/>     (8)按Ctrl+F5快捷键执行代码,执行的结果如图3-18所示。图3-18 HTML控件示例运行结果<br/><br/>     3.2.2 HTML服务器控件<br/><br/>     HTML 服务器控件其实就是在 HTML 控件的基础上加上<br/><br/>     runat=server所构成的控件。它们的主要区别是运行方式不同,HTML<br/><br/>     控件运行在客户端,而HTML服务器控件运行在服务器端。<br/><br/>     当ASP.NET网页执行时,会检查标注有无runat属性,如果标注没有<br/><br/>     设定,那么HTML标注就会被视为字符串,并被送到字符串流等待送到<br/><br/>     客户端,客户端的浏览器会对其进行解释;如果HTML标注有设定<br/><br/>     runat=server属性,Page对象会将该控件放入控制器,服务器端的代码<br/><br/>     就能对其进行控制,等到控制执行完毕后再将HTML服务器控件的执行<br/><br/>     结果转换成HTML标注,然后当成字符串流发送到客户端进行解释。<br/><br/>     下面的示例就是一个HTML服务器控件,代码如下:<br/><br/>     < input id=Button type=button value=button runat=server ><br/><br/>     下面使用HTML服务器控件创建一个简单的示例。该示例使用<br/><br/>     HTML的按钮控件,当单击按钮的时候,会弹出一个提示框。具体步骤<br/><br/>     如下。<br/><br/>     (1)打开Visual Studio 2010集成开发环境,添加一个Default2.aspx<br/><br/>     页面文件。在Default2.aspx文件中,自动生成了一个页面框架代码,生<br/><br/>     成的代码如下:<br/><br/>     <%@ Page Language=C AutoEventWireup=true<br/><br/>     CodeFile=Default2.aspx.cs<br/><br/>     Inherits=_Default2 %><br/><br/>     <!DOCTYPE html PUBLIC -W3CDTD XHTML 1.0<br/><br/>     TransitionalEN<br/><br/>     http:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd><html xmlns=http:www.w3.org1999xhtml ><br/><br/>     <head runat=server><title>无标题页<title><head><br/><br/>     <body><br/><br/>     <form id=form1 runat=server><br/><br/>     <div><div><form><body><html><br/><br/>     (2)打开“工具箱”面板(默认布局的位置在左侧)的“HTML”标<br/><br/>     签,把“Input (Button)”按钮控件拖放到主窗口中。选中按钮控件,打<br/><br/>     开“属性”面板,如图 3-19 所示。修改“Value”项的值为“单击”。修改后<br/><br/>     的“属性”面板如图3-20所示。图3-19 修改前的“属性”面板图3-20 修改后的“属性”面板<br/><br/>     (3)切换到主窗口的“源”视图,在<div>标签中已经自动生成了一<br/><br/>     行代码,代码如下:<br/><br/>     <body><br/><br/>     <form id=form1 runat=server><br/><br/>     <div><br/><br/>     <input id=Button1 type=button value=单击 ><div><form><body>(4)在按钮控件代码中,设计属性“runat”的值为“server”。这样,客户端按钮控件就转换为服务器按钮控件了。代码如下:<br/><br/>     <input id=Button1 type=button value=单击 runat=server ><br/><br/>     (5)按F7键切换到“源代码”视图,添加代码如下所示。这里可以<br/><br/>     看到,Button1添加了runat这个属性后,在后台代码可以直接访问它<br/><br/>     了。如果没有这个属性,则无法在后台访问Button1。<br/><br/>     protected void Page_Load(object sender, EventArgs e)<br/><br/>     {<br/><br/>     Button1.Value = 我变了!;<br/><br/>     }<br/><br/>     (6)按Ctrl+F5快捷键执行代码,执行的结果如图3-21所示。<br/><br/>     图3-21 HTML控件示例运行结果<br/><br/>     3.2.3 Web服务器控件<br/><br/>     Web服务器控件也称为ASP.NET服务器控件,是Web Form编程的<br/><br/>     基本元素,也是ASP.NET所特有的。它会按照client的情况产生一个或<br/><br/>     者多个HTML控件,而不是直接描述HTML元素。下面的示例就是一个Web服务器控件,代码如下:<br/><br/>     < asp:Button ID=Button2 runat=server Text=Button><br/><br/>     下面使用HTML服务器控件创建一个简单的示例,该示例使用<br/><br/>     HTML的按钮控件。当单击按钮的时候,会弹出一个提示框。具体步骤<br/><br/>     如下。<br/><br/>     (1)打开Visual Studio 2010集成开发环境,添加一个新的Web窗体<br/><br/>     Default3.aspx。<br/><br/>     (2)打开“工具箱”面板(默认布局的位置在左侧)的“标准”标<br/><br/>     签,把“Button”按钮控件拖放到主窗口中。选中按钮控件,打开“属<br/><br/>     性”面板,如图3-22所示。修改“Text”项的值为“单击”。修改后的“属<br/><br/>     性”面板如图3-23所示。图3-22 修改前的“属性”面板图3-23 修改后的“属性”面板<br/><br/>     (3)切换到主窗口的“源”视图,在<div>标签中已经自动生成了一<br/><br/>     行代码,代码如下:<br/><br/>     <body><br/><br/>     <form id=form1 runat=server><br/><br/>     <div><br/><br/>     <asp:Button ID=Button1 runat=server Text=单击 ><div><form><body>(4)切换到“设计”视图,双击按钮将会自动生成按钮的单击事<br/><br/>     件。再切换到“源”视图,生成的代码如下:<br/><br/>     <asp:Button ID=Button1 runat=server Text=单击<br/><br/>     OnClick=Button1_Click ><br/><br/>     (5)打开Default3.aspx.cs文件,已经生成了一个按钮的单击事件函<br/><br/>     数。生成的代码如下:<br/><br/>     protected void Button1_Click(object sender, EventArgs e)<br/><br/>     {<br/><br/>     }<br/><br/>     (6)在按钮的单击事件函数中添加代码,此代码的功能是输出一<br/><br/>     个简单的字符串。添加的代码如下:<br/><br/>     protected void Button1_Click(object sender, EventArgs e)<br/><br/>     {<br/><br/>     Response.Write(测试Web服务器控件。);<br/><br/>     }<br/><br/>     (7)按Ctrl+F5快捷键执行代码,执行的结果如图3-24所示。图3-24 HTML控件示例运行结果3.3 常用的ASP.NET服务器控件<br/><br/>     可以说,Web控件是动态网页技术的一大进步,真正地将后台程序<br/><br/>     和前端网页融合在一起。相对于HTML控件而言,Web控件功能更加强<br/><br/>     大,也更加抽象,不仅能够完成HTML控件的所有功能,还包括一些完<br/><br/>     成特定功能的控件,如日历控件、数据绑定控件等。<br/><br/>     3.3.1 文本框控件TextBox<br/><br/>     TextBox控件是常用的Web服务器端控件之一,主要用于文本的输<br/><br/>     入。<br/><br/>     1.功能<br/><br/>     同HtmlInputText类似,利用TextBox文本框控件,用户可以向Web<br/><br/>     窗体中键入信息(包括文本、数字和日期)。另外,通过配置其属性,TextBox可以接收单行、多行或者密码形式的数据。有两种方式在页面<br/><br/>     上添加一个TextBox对象。<br/><br/>     (1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加<br/><br/>     对象。<br/><br/>     (2)在页面HTML视图中,通过添加代码实现。例如,想要添加<br/><br/>     一个ID为“TextBox1”的单行输入框控件,可以通过添加下面的代码实<br/><br/>     现:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:TextBox id=TextBox1 runat= server><asp:TextBox><form><br/><br/>     2.属性和事件TextBox控件的常用属性和事件如图3-25所示,其功能如表3-1所<br/><br/>     示。<br/><br/>     图3-25 TextBox控件的常用属性和事件<br/><br/>     其中,TextMode的取值和对应的模式如下:<br/><br/>     (1)MultiLine为多行输入模式;<br/><br/>     (2)Password为密码输入模式;<br/><br/>     (3)SingleLine为单行输入模式。<br/><br/>     表3-1 TextBox控件的常用成员功能描述3.示例<br/><br/>     文本框通常配合按钮来应用,在用户输入完成之后向服务器提交数<br/><br/>     据。在这种应用中,TextBox和HtmlInputText非常相似,故在此不再给<br/><br/>     出示例。<br/><br/>     3.3.2 按钮控件Button<br/><br/>     Button控件是常用的Web服务器端控件之一,主要用于交互式命令<br/><br/>     操作。<br/><br/>     1.功能<br/><br/>     按钮是页面上最常用的控件之一,用户常常通过单击按钮来完成提<br/><br/>     交、确认等功能。同上一章介绍的HtmlInputButton相似,通过对单击事<br/><br/>     件编程可以完成特定的功能。有两种方式在页面上添加一个Button对<br/><br/>     象。<br/><br/>     (1)使用Visual Studio.NET开发环境的图形化对象。在工具箱<br/><br/>     的“标准”标签中,将 拖放到页面中(或者直接双击),便<br/><br/>     可在页面上添加一个Button对象。<br/><br/>     (2)在页面的HTML视图中,通过添加代码实现。例如,想要添加一个ID为“Button1”显示文字为“确定”的Button对象,可以通过添加下<br/><br/>     面的代码实现:<br/><br/>     <form id=Form1 method=post runat= server><br/><br/>     <asp:Button id=Button1 runat= server Text=确定><asp:Button><form><br/><br/>     第2行实现了Button的添加。注意:Web服务器控件标签的开头都带<br/><br/>     有“asp:”前缀。另外,同HTML服务器控件类似,Web服务器控件同样<br/><br/>     需要放在表单(form)内部才能完成提交数据的功能。<br/><br/>     2.属性和事件<br/><br/>     Button控件的常用属性和事件如图3-26所示,其功能如表3-2所示。<br/><br/>     图3-26 Button控件的常用属性和事件表3-2 Button控件的常用成员功能描述<br/><br/>     Click事件和Command事件虽然都能够响应单击事件,但并不相<br/><br/>     同。两者之间的异同如下。<br/><br/>     (1)Click事件具有简单快捷的事件响应功能。<br/><br/>     (2)Command事件具有更为强大的功能,它通过关联按钮的<br/><br/>     CommandName属性使按钮可以自动寻找并调用特定的方法,还可以通<br/><br/>     过CommandArgument属性向该方法传递参数。<br/><br/>     这样做的好处在于,当页面上需要放置多个Button按钮分别完成多<br/><br/>     个任务,而这些任务非常相似,容易用统一的方法实现时,不必为每一<br/><br/>     个Button按钮单独实现Click事件,可通过一个公共的处理方法结合各个<br/><br/>     按钮的Command事件来完成。<br/><br/>     下面给出一个使用Command事件的示例。<br/><br/>     3.示例<br/><br/>     本示例要实现的功能如图3-27所示,页面上有4个按钮,分别完成<br/><br/>     的任务如Text属性所示。容易看出,这4个按钮要实现的功能非常类<br/><br/>     似,这种情况下便可以使用Command事件。图3-27 Button按钮的Command事件示例效果<br/><br/>     (1)新建 ASP.NET 网站 ButtonTest,添加一个 Default.aspx 页<br/><br/>     面,并在页面上添加 4 个 Button对象,它们的HTML代码如下:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:Button id=Button1 runat=server Text=递增显示数字<br/><br/>     CommandName=ShowNumbers_Asc<br/><br/>     CommandArgument=Asc<br/><br/>     OnCommand=Button_Command><asp:Button><br/><br/>     <asp:Button id=Button2 runat=server Text=递减显示数字<br/><br/>     CommandName=ShowNumbers_Desc<br/><br/>     CommandArgument=Desc<br/><br/>     OnCommand=Button_Command><asp:Button><br/><br/>     <asp:Button id=Button3 runat=server Text=递减显示字母<br/><br/>     CommandName=ShowLetters_Desc<br/><br/>     CommandArgument=Desc<br/><br/>     OnCommand=Button_Command><asp:Button><br/><br/>     <asp:Button id=Button4 runat=server Text=递增显示字母<br/><br/>     CommandName=ShowLetters_Asc CommandArgument=Asc<br/><br/>     OnCommand=Button_Command><asp:Button><form><br/><br/>     代码定义了4个Button按钮,请注意对应的CommandName属性和<br/><br/>     CommandArgument属性,正是利用它们的Command事件才能自动寻找<br/><br/>     合适的执行方法。<br/><br/>     (2)转向代码页,实现按钮Command事件所触发的方法示例如<br/><br/>     下:<br/><br/>     公共单击事件方法<br/><br/>     private void Button_Command<br/><br/>     (object sender, System.Web.UI.WebControls.CommandEventArgs e)<br/><br/>     {<br/><br/>     根据按钮的CommandName进行分支<br/><br/>     switch(e.CommandName)<br/><br/>     {<br/><br/>     case ShowNumbers_Asc:<br/><br/>     输出一行说明信息<br/><br/>     Page.Response.Write(您单击了按钮递增显示数字!<br/><br/>     );<br/><br/>     调用不同的方法,并传递CommandArgument参数<br/><br/>     ShowNumbers(e.CommandArgument);<br/><br/>     break;<br/><br/>     case ShowNumbers_Desc:<br/><br/>     Page.Response.Write(您单击了按钮递减显示数字!<br/><br/>     );<br/><br/>     ShowNumbers(e.CommandArgument);break;<br/><br/>     case ShowLetters_Asc:<br/><br/>     Page.Response.Write(您单击了按钮递增显示字母!<br/><br/>     );<br/><br/>     ShowLetters(e.CommandArgument);<br/><br/>     break;<br/><br/>     case ShowLetters_Desc:<br/><br/>     Page.Response.Write(您单击了按钮递减显示字母!<br/><br/>     );<br/><br/>     ShowLetters(e.CommandArgument);<br/><br/>     break;<br/><br/>     default:<br/><br/>     break;<br/><br/>     }<br/><br/>     }<br/><br/>     该方法是4个按钮单击时都要触发的方法,能够自动判断单击来自<br/><br/>     哪一个按钮,然后去做不同的事情。通过第5行的switch语句,分支按钮<br/><br/>     的CommandName属性值来实现。<br/><br/>     第7行~第27行的case语句后的值分别是4个Button按钮的<br/><br/>     CommandName属性值,然后调用不同的方法ShowNumbers( )或者<br/><br/>     ShowLetters( )。在调用时,还将把按钮的CommandArgument属性值作为<br/><br/>     参数传递。<br/><br/>     方法ShowNumbers( )和ShowLetters( )非常简单,功能是按照增序或<br/><br/>     降序输出数字或字母。以ShowNumbers( )为例,代码如下:<br/><br/>     输出数字<br/><br/>     <param name=commandArgument>增序或者降序参数<param><br/><br/>     private void ShowNumbers(object commandArgument)<br/><br/>     {<br/><br/>     Page.Response.Write(触发了方法ShowNumbers(+commandArgument.ToString( )+)<br/><br/>     );<br/><br/>     if(commandArgument.ToString( )==Asc)<br/><br/>     Page.Response.Write(1 2 3 4 5);<br/><br/>     else if((commandArgument.ToString( )==Desc))<br/><br/>     Page.Response.Write(5 4 3 2 1);<br/><br/>     }<br/><br/>     代码非常简单,第6行~第9行对输入参数进行选择,输出不同的数<br/><br/>     字序列。ShowLetters( )方法与此相似。<br/><br/>     (3)下一步是关联4个按钮的Command事件到Button_Command( )<br/><br/>     方法。右键单击该按钮,选择“属性”命令,在“属性”窗口中单击 图<br/><br/>     标,查看该按钮的事件列表。在 Command 选项中,输入方法名,或者<br/><br/>     通过左键单击后面的 按钮选择页面中已有的方法,如图3-28所示。<br/><br/>     图3-28 关联按钮的Command方法<br/><br/>     使用同样的方法,将4个按钮的Command事件都关联到Button_Command( )方法。<br/><br/>     (4)按Ctrl+F5快捷键运行程序。<br/><br/>     4.与HTML控件比较<br/><br/>     从该例可以看出,Button相对于HtmlInputButton对象增加的功能包<br/><br/>     括:可以使用 Command 事件,结合 CommandName属性和<br/><br/>     CommandArgument 属性,使多个按钮可以共享同一个单击事件方法。<br/><br/>     3.3.3 单选框控件RadioButton<br/><br/>     RadioButton控件是常用的Web服务器端控件之一,主要用于数据列<br/><br/>     表选项。<br/><br/>     1.功能<br/><br/>     RadioButton 控件允许用户选择 True 状态或 False 状态,但是只能<br/><br/>     选择其一,与 HtmlInput RadioButton相似。有两种方式在页面上添加一<br/><br/>     个RadioButton对象。<br/><br/>     (1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加<br/><br/>     对象。<br/><br/>     (2)在页面HTML视图中,通过添加代码实现。例如,想要添加<br/><br/>     一个ID为“RadioButton1”的单选框控件,可以通过添加下面的代码实<br/><br/>     现:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp: RadioButtonid=RadioButton1runat=server><asp:<br/><br/>     RadioButton><form><br/><br/>     2.属性和事件<br/><br/>     RadioButton控件的常用属性和事件与CheckBox基本类似,不再给<br/><br/>     出。需要特殊说明的是其GroupName属性,它相当于<br/><br/>     HtmlInputRadioButton的Name属性,具有同一个 Name 的多个单选框中<br/><br/>     只能选取一个,如果某个单选框的 Checked属性被设置为True,则组中<br/><br/>     所有其他单选按钮自动变为False。<br/><br/>     3.示例<br/><br/>     本例实现的功能如图3-29所示,用户选择自己的性别,但只能在二<br/><br/>     者之中选择其一,每次选择后,页面上都将即时显示用户的性别信息。<br/><br/>     图3-29 RadioButton示例效果<br/><br/>     (1)新建 ASP.NET 网站 RadioButtonTest,新建页面并添加两个<br/><br/>     RadioButton对象,其HTML代码如下:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:RadioButton id=RadioButton1 runat=server<br/><br/>     GroupName=Group1<br/><br/>     Text=男 AutoPostBack=True><asp:RadioButton><br/><br/>     <asp:RadioButton id=RadioButton2 runat=server<br/><br/>     GroupName=Group1Text=女 AutoPostBack=True><asp:RadioButton><form><br/><br/>     注意,两个RadioButton的GroupName属性是相同的,这保证了二者<br/><br/>     选择时的互斥性。<br/><br/>     (2)双击单选框“男”,在其CheckedChanged事件方法中添加如下<br/><br/>     显示信息的代码:<br/><br/>     private void RadioButton1_CheckedChanged(object sender,System.EventArgs e)<br/><br/>     {<br/><br/>     if(RadioButton1.Checked==true)<br/><br/>     Response.Write(你的性别是:男);<br/><br/>     else<br/><br/>     Response.Write(你的性别是:女);<br/><br/>     }<br/><br/>     代码非常简单。对RadioButton2采用相同的操作。<br/><br/>     (3)按Ctrl+F5快捷键运行程序。<br/><br/>     3.3.4 链接按钮控件LinkButton<br/><br/>     LinkButton控件是常用的Web服务器端控件之一,主要用于交互式<br/><br/>     命令操作。<br/><br/>     1.功能<br/><br/>     LinkButton控件是Button和HyperLink控件的结合,实现具有超级链<br/><br/>     接样式的按钮。如果希望在单击控件时链接到另一个Web页而不用执行<br/><br/>     某些操作,使用HyperLink控件即可。有两种方式在页面上添加一个<br/><br/>     LinkButton对象。<br/><br/>     (1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加 对象。<br/><br/>     (2)在页面HTML视图中,通过添加代码实现。例如,想要添加<br/><br/>     一个ID为“LinkButton1”,显示标题为“购物>>”的链接按钮,可以通过添<br/><br/>     加下面的代码实现:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:LinkButton id=LinkButton1 runat=server>购物>><asp:LinkButton><form><br/><br/>     2.属性和事件<br/><br/>     LinkButton 对象的成员与 Button 对象非常相似,具有<br/><br/>     CommandName、CommandArgument属性以及Click和Command事件。请<br/><br/>     读者参考3.3.2小节的内容。<br/><br/>     3.示例<br/><br/>     本例使用另一种方式实现3.3.3小节示例同样的功能,同样如图3-29<br/><br/>     所示。但在本例中,当用户通过单选框选择性别时,选择的信息并不立<br/><br/>     刻发送给服务器,即不触发单选框的CheckedChanged事件,而等到当用<br/><br/>     户试图通过“购物>>”链接(实际上为按钮)跳转页面时,才触发<br/><br/>     LinkButton的Click事件,进入相应的页面。<br/><br/>     (1)新建ASP.NET 网站LinkButtonTest,添加Default.aspx页面,并<br/><br/>     添加两个RadioButton对象,其代码请参考3.3.3小节内容。不同之处在<br/><br/>     于,两个控件不具有“AutoPost Back=True”属性,即用户作选择时,服<br/><br/>     务器并不实时作出响应。<br/><br/>     另外,添加一个LinkButton控件,其HTML代码如下:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:LinkButton id=LinkButton1 runat=server>购物>><asp:LinkButton><form><br/><br/>     (2)向工程添加两个新的页面WebForm2.aspx和WebForm3.aspx。<br/><br/>     在WebForm2上,添加内容为“欢迎来到男士商场!”的标签,以及一个<br/><br/>     NavigateUrl 属性为“Default.aspx”的 HyperLink控件。WebForm3与<br/><br/>     WebForm2类似,标签的内容为“欢迎来到女士专柜!”。<br/><br/>     (3)双击链接按钮“购物>>”,在其Click事件方法中,添加转向目<br/><br/>     标页面的代码:<br/><br/>     private void LinkButton1_Click(object sender, System.EventArgs e)<br/><br/>     {<br/><br/>     if(RadioButton1.Checked==true)<br/><br/>     Page.Response.Redirect(WebForm2.aspx); 指向“男士商场”<br/><br/>     else<br/><br/>     Page.Response.Redirect(WebForm3.aspx); 指向“女士专柜”<br/><br/>     }<br/><br/>     代码根据用户的选择,在第4行、第6行使用Response对象的<br/><br/>     Redirect( )方法,实现页面的跳转。<br/><br/>     (4)按Ctrl+F5快捷键运行程序。<br/><br/>     3.3.5 列表框控件ListBox<br/><br/>     ListBox控件是常用的Web服务器端控件之一,主要用于显示数据列<br/><br/>     表。<br/><br/>     1.功能<br/><br/>     同下拉框控件DropDownList类似,列表框ListBox可以实现从预定<br/><br/>     义的多个选项中进行选择的功能。区别在于,ListBox在用户选择操作<br/><br/>     前可以看到所有的选项,并可以实现多项选择。有两种方式在页面上添<br/><br/>     加一个ListBox对象。(1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加<br/><br/>     对象。同 Drop DownList相似,初始添加的ListBox不包含<br/><br/>     选项,可以通过编辑其Items属性来添加。<br/><br/>     (2)在页面HTML视图中通过添加代码实现。例如,想要添加一<br/><br/>     个ID为“ListBox1”,选项包括6项爱好的列表框控件,可以通过添加下面<br/><br/>     的代码实现。<br/><br/>     <asp:ListBox id=ListBox1 runat=server Width=88px<br/><br/>     Height=88px><br/><br/>     <asp:ListItem Value=篮球>篮球<asp:ListItem><br/><br/>     <asp:ListItem Value=足球>足球<asp:ListItem><br/><br/>     <asp:ListItem Value=游泳>游泳<asp:ListItem><br/><br/>     <asp:ListItem Value=旅游>旅游<asp:ListItem><br/><br/>     <asp:ListItem Value=阅读>阅读<asp:ListItem><br/><br/>     <asp:ListItem Value=电影>电影<asp:ListItem><asp:ListBox><br/><br/>     2.属性和事件<br/><br/>     ListBox控件的常用属性和事件与DropDownList基本类似,不再给<br/><br/>     出。需要特殊说明的是其Rows属性,它获取或设置ListBox控件中所显<br/><br/>     示的行数。<br/><br/>     另外,ListBox 控件还有一个属性:SelectMode。它用来控制是否<br/><br/>     支持多行选择,其取值为ListSelectionMode枚举值,包括以下两种:<br/><br/>     (1)Multiple为多项选择模式,默认选项;<br/><br/>     (2)Single为单项选择模式。<br/><br/>     3.示例<br/><br/>     本示例实现的功能如图3-30所示,用户通过列表框选择爱好信息,然后页面做出不同的响应。图3-30 ListBox示例效果<br/><br/>     (1)新建ASP.NET 网站ListBoxTest,在Default.aspx页面上添加一<br/><br/>     个“爱好”列表框对象,其HTML代码如下:<br/><br/>     <asp:ListBox id=ListBox1 runat=server AutoPostBack=True<br/><br/>     SelectionMode= Multiple><br/><br/>     <asp:ListItem Value=篮球>篮球<asp:ListItem><br/><br/>     <asp:ListItem Value=足球>足球<asp:ListItem><br/><br/>     <asp:ListItem Value=游泳>游泳<asp:ListItem><br/><br/>     <asp:ListItem Value=旅游>旅游<asp:ListItem><br/><br/>     <asp:ListItem Value=阅读>阅读<asp:ListItem><br/><br/>     <asp:ListItem Value=电影>电影<asp:ListItem><asp:ListBox><br/><br/>     (2)双击列表框,在其SelectedIndexChanged事件的触发方法中输入如下代码:<br/><br/>     private void ListBox1_SelectedIndexChanged(object sender,System.EventArgs e)<br/><br/>     {<br/><br/>     Response.Write(您选择的爱好包括:);<br/><br/>     循环检查是否选择了某项<br/><br/>     for(int i=0;i<ListBox1.Items.Count;i++)<br/><br/>     {<br/><br/>     if(ListBox1.Items[i].Selected) 如果选择了该项<br/><br/>     Response.Write(ListBox1.Items[i].Text+ );<br/><br/>     }<br/><br/>     }<br/><br/>     代码在第5行~第9行使用for语句,循环检查是否选择了某项,需要<br/><br/>     使用其Item属性。其中的每一个选项都是一个ListItem对象,它的<br/><br/>     Selected值(True或False)表明该选项是否选中。<br/><br/>     (3)按Ctrl+F5快捷键运行程序。在选择多项时,需要首先按住<br/><br/>     Ctrl键,然后用鼠标左键选择。<br/><br/>     4.与HTML控件比较<br/><br/>     从这个示例可以看出,ListBox和HTML控件HtmlSelect的区别同<br/><br/>     DropDownList相似,不再重述。<br/><br/>     3.3.6 复选框控件CheckBox<br/><br/>     CheckBox控件是常用的Web服务器端控件之一,主要用于交互式的<br/><br/>     数据选项。<br/><br/>     1.功能<br/><br/>     CheckBox控件允许用户选择True状态或False状态,这与HtmlInputCheckBox相似。有两种方式在页面上添加一个CheckBox对<br/><br/>     象。<br/><br/>     (1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加<br/><br/>     对象。<br/><br/>     (2)在页面HTML视图中,通过添加代码实现。例如,想要添加<br/><br/>     一个ID为“CheckBox1”的CheckBox服务器控件对象,可以通过添加下面<br/><br/>     的代码实现:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:CheckBox id=CheckBox1runat=server><asp:CheckBox><form><br/><br/>     2.属性和事件<br/><br/>     CheckBox控件的常用属性和事件如图3-31所示,其功能如下。<br/><br/>     (1) AutoPostBack:指示在单击时CheckBox状态是否自动回<br/><br/>     发到服务器。<br/><br/>     (2) Checked:指示是否已选中 CheckBox 控件。<br/><br/>     (3) CheckedChanged:当Checked属性值更改时触发。<br/><br/>     图3-31 CheckBox部分常用成员<br/><br/>     3.示例本示例实现的功能如图3-32所示。用户可以在多个爱好中进行选<br/><br/>     择,每次进行选择时,页面上都将随时显示用户所选择的内容。<br/><br/>     图3-32 CheckBox示例效果<br/><br/>     (1)新建 ASP.NET 网站 CheckBoxTest,在页面上添加 6 个<br/><br/>     CheckBox对象,其HTML代码如下:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp:CheckBox id=CheckBox1 runat=server Text=游<br/><br/>     泳AutoPostBack=True> <asp:CheckBox><br/><br/>     <asp:CheckBox id=CheckBox2 runat=server Text=篮<br/><br/>     球AutoPostBack=True> <asp:CheckBox><br/><br/>     <asp:CheckBox id=CheckBox3 runat=server Text=旅<br/><br/>     游AutoPostBack=True> <asp:CheckBox><br/><br/>     <asp:CheckBox id=CheckBox4 runat=server Text= 足球<br/><br/>     AutoPostBack=True><asp:CheckBox><br/><br/>     <asp:CheckBox id=CheckBox5 runat=server Text= 阅读<br/><br/>     AutoPostBack=True><asp:CheckBox><br/><br/>     <asp:CheckBox id=CheckBox6 runat=server Text= 电影<br/><br/>     AutoPostBack=True><asp:CheckBox><form><br/><br/>     需要注意的是,每一个CheckBox的AutoPostBack属性都为True,这<br/><br/>     保证在用户选择时,服务器将立刻自动做出响应。<br/><br/>     (2)实现一个显示用户选择的方法Show( ),代码如下:<br/><br/>     显示用户选择的内容<br/><br/>     private void Show( )<br/><br/>     {<br/><br/>     string result=您选择的爱好有:;<br/><br/>     if(CheckBox1.Checked==true) result+=游泳 ;<br/><br/>     if(CheckBox2.Checked==true) result+=篮球 ;<br/><br/>     if(CheckBox3.Checked==true) result+=旅游 ;<br/><br/>     if(CheckBox3.Checked==true) result+=足球 ;<br/><br/>     if(CheckBox5.Checked==true) result+=阅读 ;<br/><br/>     if(CheckBox6.Checked==true) result+=电影 ;<br/><br/>     Response.Write(result);<br/><br/>     }<br/><br/>     (3)双击每一个复选框控件,在自动生成的 CheckedChanged 事件<br/><br/>     中调用 Show( )方法。以CheckBox1为例,代码如下:<br/><br/>     private void CheckBox1_CheckedChanged(object sender,System.EventArgs e)<br/><br/>     {<br/><br/>     Show( );<br/><br/>     }<br/><br/>     其余复选框均与此相同,不再给出。<br/><br/>     (4)按Ctrl+F5快捷键运行程序。<br/><br/>     4.与HTML控件比较<br/><br/>     从这个实例可以看出,Web控件CheckBox相对于HTML控件HtmlInputCheckBox增加的功能包括:<br/><br/>     (1)可以使用Text属性,直接在复选框的后面添加文字;<br/><br/>     (2)可以利用CheckedChanged事件,自动触发用户选择时的动<br/><br/>     作。<br/><br/>     3.3.7 图像控件Image<br/><br/>     Image控件是常用的Web服务器端控件之一,主要用于显示图像。<br/><br/>     1.功能<br/><br/>     Image控件可以在Web窗体页上显示图像,并用服务器端的代码管<br/><br/>     理这些图像。有两种方式在页面上添加一个Image对象。<br/><br/>     (1)在工具箱的“标准”标签中,通过鼠标拖放或双击操作,添加<br/><br/>     对象。<br/><br/>     (2)在页面HTML视图中,通过添加代码实现。例如,想要添加<br/><br/>     一个ID为“HyperLink1”,显示的标题为“购物>>”的超级链接服务器控<br/><br/>     件,可以通过添加下面的代码实现:<br/><br/>     <form id=Form1 method=post runat=server><br/><br/>     <asp: Image id= Image1 runat= server ImageUrl=…> <asp:<br/><br/>     Image ><form><br/><br/>     2.属性<br/><br/>     Image控件的常用属性如图3-33所示,其功能如下。图3-33 Image控件的常用属性<br/><br/>     (1) AlternateText:当图像不可用时,Image控件中显示的是<br/><br/>     替换文本。<br/><br/>     (2) ImageAlign:Image控件相对于Web页上其他元素的对齐<br/><br/>     方式。<br/><br/>     (3) ImageUrl:图像的位置。<br/><br/>     3.示例<br/><br/>     本示例实现的功能如图3-34所示。刚进入页面时,由于未指定图片<br/><br/>     源,图片显示提示信息。当作出选择后,根据用户选择的性别页面将出<br/><br/>     现不同的图片。图3-34 Image示例效果<br/><br/>     (1)新建网站 ImageTest,在程序所在的目录下建立一个文件<br/><br/>     夹“Pics”,并在里面放置两幅图片:男.JPG、女.JPG。在Default.aspx页<br/><br/>     面上添加以下控件:<br/><br/>     ①两个RadioButton对象;<br/><br/>     ②一个Image对象。<br/><br/>     其HTML代码如下:<br/><br/>     <asp:Image id=Image1 runat=server Width=200px Height=100px<br/><br/>     AlternateText=选择性别!><asp:Image><br/><br/>     (2)双击单选框按钮,在其CheckedChanged事件触发方法中输入<br/><br/>     如下代码:<br/><br/>     private void RadioButton1_CheckedChanged(object sender,System.EventArgs e)<br/><br/>     {<br/><br/>     if(RadioButton1.Checked==true)Image1.ImageUrl=.pics男.png; 利用ImageUrl属性改变图片<br/><br/>     源<br/><br/>     else<br/><br/>     Image1.ImageUrl=.pics女.png ;<br/><br/>     }<br/><br/>     代码很简单,第4行、第6行利用Image的ImageUrl属性来改变图像<br/><br/>     源。<br/><br/>     (3)按Ctrl+F5快捷键运行程序。<br/><br/>     4.与HTML控件比较<br/><br/>     从这个实例可以看出,Web控件 Image和 HTML控件 HtmlImage的<br/><br/>     区别在于:Image使用ImageUrl控制图像来源,而HtmlImage使用Src属<br/><br/>     性。3.4 登录控件<br/><br/>     ASP.NET提供了一组登录控件,通过这些控件,开发者可以提高工<br/><br/>     作效率。<br/><br/>     3.4.1 登录控件简介<br/><br/>     ASP.NET登录控件为ASP.NET Web应用程序提供了一种可靠的、无<br/><br/>     须编程的登录解决方案。默认情况下,登录控件与ASP.NET成员资格和<br/><br/>     Forms身份验证集成,以帮助实现网站的用户身份验证过程的自动化。<br/><br/>     默认情况下,ASP.NET登录控件以纯文本形式工作于HTTP上。如<br/><br/>     果用户对安全性十分关注,那么可以使用带SSL加密的HTTPS。<br/><br/>     3.4.2 使用登录控件<br/><br/>     登录控件包括Login控件、LoginView控件、LoginStatus控件、LoginName控件、Password Recovery控件、CreateUserWizard控件和<br/><br/>     ChangePassword控件。<br/><br/>     1.Login控件<br/><br/>     Login控件显示用于执行用户身份验证的用户界面。Login控件包含<br/><br/>     用于用户名和密码的文本框和一个复选框,该复选框让用户指示是否需<br/><br/>     要服务器使用ASP.NET成员资格存储他们的标识并且当他们下次访问该<br/><br/>     站点时自动进行身份验证。<br/><br/>     Login 控件有用于自定义显示、自定义消息的属性和指向其他页的<br/><br/>     链接,在那些页面中用户可以更改密码或找回忘记的密码。Login 控件<br/><br/>     可用作主页上的独立控件,或者用户还可以在专门的登录页上使用它。如果用户一同使用Login控件和ASP.NET成员资格,将不需要编写<br/><br/>     执行身份验证的代码。然而,如果用户想创建自己的身份验证逻辑,则<br/><br/>     用户可以处理Login控件的Authenticate事件并添加自定义身份验证代<br/><br/>     码。<br/><br/>     使用Login控件比较简单,只要把“工具箱”面板中“登录”标签的<br/><br/>     Login控件拖放到主窗口即可。拖放后的效果如图3-35所示。<br/><br/>     图3-35 Login控件<br/><br/>     2.LoginView控件<br/><br/>     使用LoginView控件可以向匿名用户和登录用户显示不同的信息。<br/><br/>     该控件显示以下两个模板之一:AnonymousTemplate 或<br/><br/>     LoggedInTemplate。在这些模板中,用户可以分别添加为匿名用户和经<br/><br/>     过身份验证的用户显示适当信息的标记和控件。<br/><br/>     LoginView控件还包括ViewChanging和ViewChanged的事件,用户<br/><br/>     可以为这些事件编写当用户登录和更改状态时的处理程序。<br/><br/>     使用LoginView控件比较简单,只要把“工具箱”面板中“登录”标签<br/><br/>     的Login控件拖放到主窗口即可。拖放后的效果如图3-36所示。<br/><br/>     3.LoginStatus控件<br/><br/>     LoginStatus控件为没有通过身份验证的用户显示登录链接,为通过<br/><br/>     身份验证的用户显示注销链接。登录链接将用户带到登录页,注销链接<br/><br/>     将当前用户的身份重置为匿名用户。使用LoginStatus控件比较简单,只要把“工具箱”面板中“登录”标签<br/><br/>     的LoginStatus控件拖放到主窗口即可。拖放后的效果如图3-37所示。<br/><br/>     可以通过设置LoginText和LoginImageUrl属性自定义LoginStatus控<br/><br/>     件的外观。<br/><br/>     图3-36 Login控件<br/><br/>     图3-37 LoginStatus控件<br/><br/>     4.LoginName控件<br/><br/>     如果用户已使用ASP.NET成员资格登录,LoginName控件将显示该<br/><br/>     用户的登录名。或者,如果站点使用集成Windows身份验证,该控件将<br/><br/>     显示用户的Windows账户名。<br/><br/>     使用LoginName控件比较简单,只要把“工具箱”面板中“登录”标签<br/><br/>     的 LoginName 控件拖放到主窗口即可。拖放后的效果如图 3-38所示。<br/><br/>     图3-38 LoginName控件<br/><br/>     5.PasswordRecovery控件<br/><br/>     PasswordRecovery 控件允许根据创建账户时所使用的电子邮件地址来找回用户密码。PasswordRecovery控件会向用户发送包含密码的电子<br/><br/>     邮件。<br/><br/>     用户可以配置 ASP.NET 成员资格,以使用不可逆的加密来存储密<br/><br/>     码。在这种情况下, PasswordRecovery控件将生成一个新密码,而不是<br/><br/>     将原始密码发送给用户。<br/><br/>     用户还可以配置成员资格,以包括一个用户为了找回密码必须回答<br/><br/>     的安全提示问题。如果这样做,PasswordRecovery控件将在找回密码前<br/><br/>     提问该问题并核对答案。<br/><br/>     PasswordRecovery 控件要求用户的应用程序能够将电子邮件转发给<br/><br/>     简单邮件传输协议(SMTP)服务器。用户可以通过设置 MailDefinition<br/><br/>     属性自定义发送给用户的电子邮件的文本和格式。<br/><br/>     使用PasswordRecovery控件比较简单,只要把“工具箱”面板中“登<br/><br/>     录”标签的PasswordRecovery控件拖放到主窗口即可。拖放后的效果如图<br/><br/>     3-39所示。<br/><br/>     图3-39 PasswordRecovery控件<br/><br/>     下面的示例演示了一个在ASP.NET页中声明的PasswordRecovery控<br/><br/>     件,其MailDefinition属性设置用来自定义电子邮件。<br/><br/>     <asp:PasswordRecovery ID=PasswordRecovery1 Runat=server<br/><br/>     SubmitButtonText=Get Password SubmitButtonType=Link><br/><br/>     <MailDefinition From=administrator@Contoso.com<br/><br/>     Subject=Your new password<br/><br/>     BodyFileName=PasswordMail.txt ><asp:PasswordRecovery><br/><br/>     6.CreateUserWizard控件<br/><br/>     CreateUserWizard控件收集潜在用户提供的信息。默认情况下,CreateUserWizard控件将新用户添加到ASP.NET成员资格系统中。<br/><br/>     CreateUserWizard控件收集下列用户信息:<br/><br/>     (1)用户名;<br/><br/>     (2)密码;<br/><br/>     (3)密码确认;<br/><br/>     (4)电子邮件地址;<br/><br/>     (5)安全提示问题;<br/><br/>     (6)安全答案(此信息用来对用户进行身份验证并找回用户密<br/><br/>     码,如果需要的话)。<br/><br/>     使用CreateUserWizard控件比较简单,只要把“工具箱”面板中“登<br/><br/>     录”标签的CreateUserWizard控件拖放到主窗口即可。拖放后的效果如图<br/><br/>     3-40所示。图3-40 CreateUserWizard控件<br/><br/>     下面的示例演示了CreateUserWizard控件的一个典型的ASP.NET声<br/><br/>     明,代码如下:<br/><br/>     <asp:CreateUserWizard ID=CreateUserWizard1 Runat=server<br/><br/>     ContinueDestinationPageUrl=~Default.aspx><br/><br/>     <WizardSteps><br/><br/>     <asp:CreateUserWizardStep Runat=server<br/><br/>     Title=Sign Up for Your New Account><asp:CreateUserWizardStep><br/><br/>     <asp:CompleteWizardStep Runat=server<br/><br/>     Title=Complete><asp:CompleteWizardStep><WizardSteps><asp:CreateUserWizard><br/><br/>     7.ChangePassword控件<br/><br/>     通过ChangePassword控件,用户可以更改其密码。用户必须首先提<br/><br/>     供原始密码,然后创建并确认新密码。如果原始密码正确,则用户密码<br/><br/>     将更改为新密码。该控件还支持发送关于新密码的电子邮件。<br/><br/>     ChangePassword 控件包含显示给用户的两个模板化视图。第一个模<br/><br/>     板是 ChangePassword Template,它显示用来收集更改用户密码所需数据<br/><br/>     的用户界面。第二个模板是 SuccessTemplate,它定义当用户密码更改成<br/><br/>     功以后显示的用户界面。<br/><br/>     ChangePassword控件由通过身份验证和未通过身份验证的用户使<br/><br/>     用。如果用户未通过身份验证,该控件将提示用户输入登录名。如果用<br/><br/>     户已通过身份验证,该控件将用用户的登录名填充文本框。<br/><br/>     使用ChangePassword控件比较简单,只要把“工具箱”面板中“登<br/><br/>     录”标签的ChangePassword控件拖放到主窗口即可。拖放后的效果如图3-41所示。<br/><br/>     图3-41 ChangePassword控件3.5 最普通的登录方式<br/><br/>     为了验证用户是否可以访问站点,就必须要求用户进行登录。本节<br/><br/>     重点介绍如何使用ASP.NET中的登录控件实现用户的安全登录验证。其<br/><br/>     主要功能有注册、登录、修改密码和显示状态,登录流程如图3-42所<br/><br/>     示。<br/><br/>     图3-42 简单登录流程图<br/><br/>     3.5.1 用户注册功能<br/><br/>     通常用户第一次访问网站的时候,需要在网站上提供一个注册界面<br/><br/>     给用户才能让用户登录到本站点。具体设计步骤如下。<br/><br/>     (1)新建网站 UserTest,在网站根目录下添加一个 Web 窗<br/><br/>     体“Register”,为用户注册提供页面。<br/><br/>     (2)切换到窗体的设计视图,拖放“登录”控件组中<br/><br/>     的“CreateUserWizard”控件到界面中,如图3-43所示。<br/><br/>     (3)注册用户默认分为两步,第一步填写用户信息,第二步完成提示信息。通过任务列表中的“步骤”下拉框实现两步视图的切换。<br/><br/>     (4)选中“步骤”下拉框中的“完成”视图,打开完成界面。可以看<br/><br/>     到在完成界面中按钮的提示信息显示的是“继续”,将其修改为“完成”。<br/><br/>     图3-43 注册界面<br/><br/>     (5)按F4键打开控件的属性窗口,修改“ContinueButtonText”属性<br/><br/>     为“完成”。为了使用户注册后能登录到网站的默认页,还需要修<br/><br/>     改“ContinueDestinationPageUrl”属性为当前站点的默认<br/><br/>     页“~Default.aspx”。<br/><br/>     (6)将注册页面设置为起始页,按F5键运行程序,测试能否正常<br/><br/>     注册并显示默认页。<br/><br/>     3.5.2 用户登录功能<br/><br/>     如果用户是第一次登录,则注册后直接进入站点内页面;如果用户<br/><br/>     已经注册,则通过登录界面进入网站。登录页面的设计步骤如下。<br/><br/>     (1)在网站根目录下添加一个Web窗体“Login”,主要用来呈现用户的登录界面。<br/><br/>     (2)切换到设计界面,从“登录”控件组中拖放一个“Login”控件到<br/><br/>     界面中,如图3-44所示。<br/><br/>     图3-44 登录控件界面<br/><br/>     (3)此控件包装了用户的验证过程,不需要开发人员编写任何代<br/><br/>     码,为了保证登录后进入网站的默认页面,还需要修改属<br/><br/>     性“DestinationPageUrl”为“~Default.aspx”。<br/><br/>     (4)如果登录时选中“下次记住我。”复选框,则系统自动保存用<br/><br/>     户的登录信息。<br/><br/>     有些网站不允许匿名用户访问站内页面,那么如何防止匿名用户绕<br/><br/>     过登录界面直接进入站内访问呢?<br/><br/>     配置文件web.config提供了安全验证的设置,保证用户必须登录才<br/><br/>     可以访问站内页面,具体配置如下:<br/><br/>     <?xml version=1.0?><br/><br/>     <configuration<br/><br/>     xmlns=http:schemas.microsoft.com.NetConfigurationv2.0><br/><br/>     <system.web><br/><br/>     <!--<br/><br/>     通过<authentication>节可以配置 ASP.NET 使用的<br/><br/>     安全身份验证模式,以标识传入的用户。--><br/><br/>     <authentication mode=Forms ><br/><br/>     <forms loginUrl=Login.aspx name=.ASPXFORMSAUTH><forms><authentication><br/><br/>     <authorization><br/><br/>     <deny users=? ><authorization><br/><br/>     <compilation debug=true><system.web><configuration><br/><br/>     将“Default.aspx”设置为起始页,测试是否出现登录窗口,要求用户<br/><br/>     登录后自动转到Default页。<br/><br/>     3.5.3 修改密码功能<br/><br/>     为了保证信息安全,用户可能需要经常修改自己的登录密码,ASP.NET也提供了一个修改密码的控件,实现步骤如下。<br/><br/>     (1)在网站根目录下,添加一个Web窗体“ChangePassword”,主要<br/><br/>     用于密码的修改。<br/><br/>     (2)切换到设计视图,从“登录”控件组中拖放一<br/><br/>     个“ChangePassword”控件到界面中,如图3-45所示。图3-45 密码修改控件的界面<br/><br/>     (3)从控件的任务列表中可以看到,视图下拉框中包含两项:更<br/><br/>     改密码和完成。切换到完成视图,可以看到更改成功后的提示。<br/><br/>     (4)完成视图中显示的提示按钮信息是“继续”,修<br/><br/>     改“ContinueButtonText”属性为“完成”。<br/><br/>     (5)为了让用户确定自己的修改,还可以修改属<br/><br/>     性“DisplayUserName”为“True”,表示修改密码时显示密码所有人的名<br/><br/>     字。<br/><br/>     (6)密码修改后,根据网站流程可以转入登录页,也可以转入网<br/><br/>     站默认页,本例将转到默认页。修改“ContinueDestinationPageUrl”属性<br/><br/>     为“~Default.aspx”。<br/><br/>     (7)将本页设置为起始页,按F5键运行程序,测试密码修改是否<br/><br/>     成功。<br/><br/>     3.5.4 在登录页面中添加注册导航功能<br/><br/>     登录控件“Login”提供了很多便利的操作,可以无代码实现多个导<br/><br/>     航功能。本小节主要介绍注册功能的导航,步骤如下。<br/><br/>     (1)打开页面“Login.aspx”,切换到设计页面。<br/><br/>     (2)选中“Login”控件,按F4键打开其属性窗口,可以看到有很多以“Url”结尾的属性。注册功能的导航属性为“Create UserUrl”,修改其内<br/><br/>     容为“~Register.aspx”。Register 页面是本例在介绍用户注册功能时创建<br/><br/>     的注册页。<br/><br/>     (3)为了提示用户此导航的目的地,还需要给用户一个提示,修<br/><br/>     改属性“CreateUserText”为“新用户注册”。<br/><br/>     (4)此时登录页面就多了一个注册的导航功能,如图 3-46所示。<br/><br/>     图3-46 登录页面中的注册导航<br/><br/>     3.5.5 显示登录用户名和用户状态功能<br/><br/>     为了显示网站的人性化设计,通常在用户登录后显示欢迎信息,并<br/><br/>     提供便于用户操作的退出服务。两个功能的实现步骤如下。<br/><br/>     ( 1 )打开 Default.aspx 文件,在右上角拖放两个控<br/><br/>     件“LoginStatus”和“LoginName”。“LoginStatus”控件检测用户的身份验证<br/><br/>     状态,并将链接的状态切换为网站的登录或注销。“LoginName”控件主<br/><br/>     要显示当前登录的用户名称。<br/><br/>     (2)默认情况下,当用户选择注销时,网站会跳转到登录页面。<br/><br/>     如果需要导航到其他页面,可以修改属<br/><br/>     性“LogoutPageUrl”和“LogoutText”。<br/><br/>     (3)此功能不需要任何代码,将Default设置为起始页,按F5键运行程序,测试是否正确显示登录的用户名和状态。<br/><br/>     3.5.6 根据用户登录身份显示不同效果页功能<br/><br/>     为了体现网站对于不同登录者的个性显示,.NET 2.0提供了一个新<br/><br/>     的控件“LoginView”,它根据用户是否已登录来显示不同的信息。此功<br/><br/>     能的设计步骤如下。<br/><br/>     (1)打开Default.aspx页面,切换到设计视图。<br/><br/>     (2)拖放一个“LoginView”控件到界面中。通过控件的任务列表可<br/><br/>     以看出,在视图下拉框中有两个模<br/><br/>     板:“AnonymousTemplate”和“LoggedInTemplate”。一个表示匿名用户,另一个表示已登录用户。<br/><br/>     (3)将视图切换到“AnonymousTemplate”,在控件中输入“用户还<br/><br/>     没有登录”,用来提示用户的状态。<br/><br/>     (4)将视图切换到“LoggedInTemplate”,在控件中拖放一个用户名<br/><br/>     控件“LoginName”,然后在控件前输入“欢迎用户:”。<br/><br/>     (5)从设计可以看出,当用户未登录时,提示用户的状态;当用<br/><br/>     户登录后,将显示欢迎信息。<br/><br/>     (6)因为本例不允许匿名用户访问网站,所以还必须修改<br/><br/>     web.config文件中的配置,修改结果如下:<br/><br/>     <?xml version=1.0?><br/><br/>     <configuration<br/><br/>     xmlns=http:schemas.microsoft.com.NetConfigurationv2.0><br/><br/>     <system.web><br/><br/>     <!--<br/><br/>     通过<authentication>节可以配置 ASP.NET 使用的<br/><br/>     安全身份验证模式,以标识传入的用户。--><br/><br/>     <authentication mode=Forms ><br/><br/>     <forms loginUrl=Login.aspx name=.ASPXFORMSAUTH><forms><authentication><br/><br/>     <authorization><br/><br/>     <!--防止匿名用户访问的配置,本例将其屏蔽--><br/><br/>     <!--deny users=? > --><authorization><br/><br/>     <compilation debug=true><system.web><configuration><br/><br/>     (7)将Default.aspx设置为起始页,按F5键运行程序,查看两种视<br/><br/>     图的区别。<br/><br/>     3.5.7 小结<br/><br/>     本节除了讲解登录控件之外,还涉及配置文件web.config的使用。<br/><br/>     web.config文件是一个XML文本文件,它用来储存 ASP.NET Web<br/><br/>     应用程序的配置信息(如最常用的设置 ASP.NET Web 应用程序的身份<br/><br/>     验证方式),它可以出现在应用程序的每一个目录中。当通过C新建一<br/><br/>     个Web应用程序或者网站后,默认情况下会在根目录自动创建一个默认<br/><br/>     的web.config 文件,包括默认的配置设置,所有的子目录都继承它的配<br/><br/>     置设置。如果想修改子目录的配置设置,可以在该子目录下新建一个<br/><br/>     web.config文件。它可以提供除从父目录继承的配置信息以外的配置信<br/><br/>     息,也可以重写或修改父目录中定义的设置。<br/><br/>     在运行时对 web.config 文件的修改不需要重启服务就可以生效(注:<processModel>节例外)。当然,web.config文件是可以扩展<br/><br/>     的。用户可以自定义新配置参数并编写配置节处理程序以对它们进行处<br/><br/>     理。<br/><br/>     configuration元素是公共语言运行库和.NET Framework应用程序所<br/><br/>     使用的每个配置文件中均需要的根元素。每个配置文件必须恰好包含一<br/><br/>     个 configuration 元素。下面的代码是一个标准的web.config文件的内<br/><br/>     容。<br/><br/>     <?xml version=1.0?><br/><br/>     <configuration<br/><br/>     xmlns=http:schemas.microsoft.com.NetConfigurationv2.0><br/><br/>     <appSettings><br/><br/>     <connectionStrings><br/><br/>     <system.web><br/><br/>     <compilation debug=false><br/><br/>     <authentication mode=Windows><br/><br/>     <!--<br/><br/>     <customErrors mode=RemoteOnly<br/><br/>     defaultRedirect=GenericErrorPage.htm><br/><br/>     <error statusCode=403 redirect=NoAccess.htm><br/><br/>     <error statusCode=404 redirect=FileNotFound.htm><customErrors>--><system.web><configuration><br/><br/>     其中,常用的属性和子元素说明如下。<br/><br/>     (1)xmlns:可选的String属性。指定用于验证配置文件的XML架<br/><br/>     构的URL。(2)configSections:指定配置节和命名空间声明。<br/><br/>     (3)appSettings:包含自定义应用程序设置,如文件路径、XML<br/><br/>     Web services URL或存储在应用程序的.ini文件中的任何信息。<br/><br/>     (4)connectionStrings:为ASP.NET 应用程序和功能指定数据库连<br/><br/>     接字符串(名称值对的形式)的集合。<br/><br/>     (5)location:指定应用子配置设置的资源。此元素也锁定配置设<br/><br/>     置,以防止子配置文件重写这些设置。3.6 基于角色的登录方式<br/><br/>     为了保证网站的访问安全,通常要为用户设计一定的权限,这种权<br/><br/>     限通常被称为角色。角色所拥有的权限在.NET中被称为访问规则。基于<br/><br/>     角色的登录流程如图3-47所示。<br/><br/>     图3-47 基于角色的登录流程图<br/><br/>     3.6.1 在应用程序中启用角色<br/><br/>     角色是具有某些权限的用户。在配置工具中,角色的管理和用户管<br/><br/>     理有所不同。本小节将详细介绍如何使用工具管理角色。角色管理功能<br/><br/>     必须先启用,才能对用户进行管理。启用步骤如下。<br/><br/>     (1)打开配置管理工具,单击“安全”链接,切换到安全配置界<br/><br/>     面。<br/><br/>     (2)在“角色”板块,单击“启用角色”链接,系统自动为应用程序<br/><br/>     开启角色功能。<br/><br/>     (3)关闭配置管理工具,在Visual Studio 2010 的解决方案资源管理器中,打开web.config文件。<br/><br/>     (4)在配置文件中,多了一条配置“<roleManager<br/><br/>     enabled=true>”,这就是刚刚在配置工具中所做的修改。<br/><br/>     启用角色功能后,就可以为网站创建角色。<br/><br/>     3.6.2 创建角色<br/><br/>     角色主要是定义用户所能执行的操作,其创建步骤如下。<br/><br/>     (1)打开配置管理工具,单击“安全”链接,切换到安全配置界<br/><br/>     面。<br/><br/>     (2)在“角色”板块,单击“创建或管理角色”链接,打开创建新角<br/><br/>     色界面,如图3-48所示。<br/><br/>     图3-48 创建新角色界面(3)输入新角色名称,如“管理员”。<br/><br/>     (4)单击“添加角色”按钮,系统自动在下边列出所添加的角色。<br/><br/>     角色功能是为了网站安全而设计的,每个用户只能查看自己角色所<br/><br/>     允许的访问页面。<br/><br/>     3.6.3 创建角色访问规则<br/><br/>     访问规则用于控制角色对整个网站和单个文件夹的访问。其创建步<br/><br/>     骤如下。<br/><br/>     (1)打开配置管理工具,单击“安全”链接,切换到安全配置界<br/><br/>     面。<br/><br/>     (2)在“访问规则”板块,单击“创建访问规则”链接,打开添加访<br/><br/>     问规则界面,如图3-49所示。图3-49 添加访问规则界面<br/><br/>     (3)左侧的目录树显示网站内所有的文件夹。右侧的规则应用有4<br/><br/>     个选项:角色、用户、所有用户和匿名用户。根据网站的需要对上述4<br/><br/>     个选项进行配置。<br/><br/>     (4)权限主要有两种:允许或拒绝。如果将个别用户排斥在访问<br/><br/>     权限以外,可指定用户名,然后选择“拒绝”。<br/><br/>     (5)配置完成后,单击“确定”按钮。系统自动在web.config文件中<br/><br/>     用元素的形式生成刚才的配置。<br/><br/>     (6)打开web.config文件,代码如下:<br/><br/>     <?xml version=1.0 encoding=utf-8?><br/><br/>     <configuration<br/><br/>     xmlns=http:schemas.microsoft.com.NetConfigurationv2.0><br/><br/>     <system.web><br/><br/>     <authorization><br/><br/>     <allow roles=管理员 ><authorization><br/><br/>     <roleManager enabled=true ><br/><br/>     <authentication mode=Forms ><system.web><configuration><br/><br/>     3.6.4 赋予用户角色权限<br/><br/>     一般的网站都有管理员和普通用户两个角色,管理员主要负责网站<br/><br/>     的维护,而普通用户则只具有浏览功能。赋予用户角色的步骤如下。<br/><br/>     (1)打开配置管理工具,单击“安全”链接,切换到安全配置界<br/><br/>     面。(2)在“角色”板块,单击“创建或管理角色”链接,打开管理角色<br/><br/>     界面。<br/><br/>     (3)在角色列表中,单击“管理”链接,打开界面如图3-50所示。<br/><br/>     图3-50 管理角色界面<br/><br/>     (4)系统并不自动显示所有的用户,管理人员可通过搜索的方式<br/><br/>     查找某用户,也可单击“全部”链接,显示系统中的所有用户。<br/><br/>     (5)显示用户的列表中,有一个“用户属于角色”复选框。如果要<br/><br/>     将此角色赋予某个用户,直接选中此用户的复选框即可。<br/><br/>     本小节主要讲解了ASP.NET中站点安全配置工具的使用,通过工具<br/><br/>     可以管理用户、角色和访问规则,并自动生成配置。<br/><br/>     3.6.5 验证角色的登录<br/><br/>     如果只允许具有某角色的成员才能访问,必须在web.config文件中进行设置。具体实现步骤如下。<br/><br/>     (1)本例在默认情况下,只允许角色是管理员的用户才可以登录<br/><br/>     系统。打开web.config文件,修改其验证属性,代码如下:<br/><br/>     <authorization><br/><br/>     <allow roles=管理员 ><br/><br/>     <deny roles=普通用户 ><authorization><br/><br/>     (2)将Default.aspx设置为起始页,按F5键运行程序。<br/><br/>     (3)在登录界面输入具有普通用户角色的用户名“User”,系统不<br/><br/>     发生任何变化,还是停留在登录页,因为在配置中使用“deny”拒绝了具<br/><br/>     有“普通用户”角色的用户登录。<br/><br/>     3.6.6 小结<br/><br/>     在配置文件web.config中,有两个子元素涉及用户的登录验证:<br/><br/>     authentication和authorization。<br/><br/>     1.authentication<br/><br/>     authentication元素的作用是配置ASP.NET应用程序的身份验证支<br/><br/>     持,包括:Windows、Forms、Passport和None4种。这4种身份验证支持<br/><br/>     的说明如表3-3所示。<br/><br/>     表3-3 authentication的属性<br/><br/>     2.authorizationauthorization 表示控制对 URL 资源的客户端访问(如允许匿名用户<br/><br/>     访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或<br/><br/>     页)上声明。<br/><br/>     其格式如下:<br/><br/>     <authorization><br/><br/>     <allow users=comma-separated list of users<br/><br/>     roles=comma-separated list of roles<br/><br/>     verbs=comma-separated list of verbs><br/><br/>     <deny users=comma-separated list of users<br/><br/>     roles=comma-separated list of roles<br/><br/>     verbs=comma-separated list of verbs><authorization><br/><br/>     子标记的详细说明如表3-4所示。<br/><br/>     表3-4 authorization的子标记<br/><br/>     在运行时,授权模块通过<allow>和<deny>标记进行反复操作,直<br/><br/>     到找到第一个访问规则适合特定的用户为止。然后它根据找到的第一个<br/><br/>     访问规则是<allow>还是<deny>来允许或拒绝访问URL 资源。<br/><br/>     Machine.config 文件中默认的授权规则是<allow users=>,因此除非<br/><br/>     另行配置,否则在默认情况下是允许访问的。例如,下面的代码示例是对 Admins 角色的所有成员允许访问并对所有用户拒绝访问。<br/><br/>     <configuration><br/><br/>     <system.web><br/><br/>     <authorization><br/><br/>     <allow roles=Admins><br/><br/>     <deny users=><authorization><system.web><configuration>3.7 匿名用户的授权管理<br/><br/>     在ASP.NET中,匿名用户不再匿名,现在可以为未知用户自动指定<br/><br/>     一个ID,这个ID会存储到永久的Cookie或URL中。<br/><br/>     管理匿名用户的好处在于,即使用户没有登录或注册,都可以在数<br/><br/>     据库中存储有关该用户的信息,这特别适用于ASP.NET新提出的个性化<br/><br/>     设置功能。本节将介绍如何管理匿名用户,具体步骤如下。<br/><br/>     (1)默认情况下禁止自动生成匿名用户的ID,如果想生成,必须<br/><br/>     修改配置文件web.config,修改结果如下:<br/><br/>     <anonymousIdentification<br/><br/>     enabled=true<br/><br/>     cookieless=UseCookies<br/><br/>     cookieName=.ASPXANONYMOUS<br/><br/>     cookieTimeout=30<br/><br/>     cookiePath=<br/><br/>     cookieRequireSSL=false<br/><br/>     cookieSlidingExpiration = true<br/><br/>     cookieProtection=All<br/><br/>     ><br/><br/>     (2)获取匿名用户的ID。在获取登录用户的属性时,使用的是<br/><br/>     HttpContext上下文中的“Identity”属性,而获取匿名用户的信息则是通过<br/><br/>     HttpRequest中的“AnonymousID”属性。<br/><br/>     (3)打开Default.aspx页面,拖放一个Button控件,双击控件进入<br/><br/>     其Click代码事件,添加一行代码如下:<br/><br/>     Button1.Text = Request.AnonymousID;(4)屏蔽掉web.config中关于匿名用户不允许登录的配置,按F5键<br/><br/>     运行程序,单击“Button”控件查看是否正确显示匿名用户自动分配的<br/><br/>     ID。小结<br/><br/>     本章从不同的角度实现了用户的登录验证,并介绍了ASP.NET中一<br/><br/>     些新的安全验证控件,其良好的包装性为网站设计登录功能提供了简化<br/><br/>     的操作。其实ASP.NET中提供的大多数登录控件也包装了验证过程,要<br/><br/>     想深入了解这些验证过程,可以参考有关.NET Framework方面的书籍。习题<br/><br/>     1.默认情况下,登录控件与______和______集成,以帮助实现网站<br/><br/>     的用户身份验证过程的自动化。<br/><br/>     2.通过______工具可以配置站点的一些公共属性,如验证类型等。<br/><br/>     3.下面几个控件中不属于登录控件的是______。<br/><br/>     A.Login控件<br/><br/>     B.LoginView控件<br/><br/>     C.PasswordRecovery控件<br/><br/>     D.TextBox控件<br/><br/>     4.下面描述中,不正确的是______。<br/><br/>     A.HTML控件就是我们通常的说的html语言<br/><br/>     B.HTML控件既可以在客户端控制,还可以在服务器端<br/><br/>     C.Web服务器控件也称asp.net服务器控件<br/><br/>     D.以上都不正确<br/><br/>     5.登录控件包含几个,列举其中的4个。<br/><br/>     6.什么是HTML服务器控件?它与HTML控件有哪些区别?<br/><br/>     7.列举3个常用的ASP.NET服务器控件。上机指导<br/><br/>     本章通过使用登录控件,实现了常用的登录功能。这些登录功能包<br/><br/>     括用户注册、用户登录、修改密码、显示用户名和状态等。<br/><br/>     实验一:用户注册功能<br/><br/>     实验目的<br/><br/>     巩固知识点——用户注册控件。通过用户注册控件可以方便的实现<br/><br/>     用户注册功能。<br/><br/>     实现思路<br/><br/>     在 3.4 节中讲述了用户注册控件的使用,在用户注册控件中,通过<br/><br/>     右侧的“CreateWizard 任务”中的“自定义创建用户步骤”,开发者可以自<br/><br/>     己定义用户注册的步骤。同时还可以自定义完成步骤。<br/><br/>     则少量改动该例子,就可以自定义创建用户步骤和自定义完成步<br/><br/>     骤,改动后运行结果如图3-51所示。图3-51 自定义创建用户步骤<br/><br/>     实验二:用户管理系统<br/><br/>     实验目的<br/><br/>     巩固知识点——登录控件的综合使用。登录控件包含了一套用户登<br/><br/>     录系统的解决方案,通过登录控件,可以很方便地创建一个简单的用户<br/><br/>     登录管理系统。<br/><br/>     实现思路<br/><br/>     综合使用用户注册控件、用户登录控件、修改密码控件、注册导航<br/><br/>     控件、显示用户名和状态控件等创建一个简单的用户登录管理系统。具<br/><br/>     体步骤如下。<br/><br/>     (1)在首页中,拖放一个 Login 控件到页面中,创建一个用户登<br/><br/>     录的页面,效果如图 3-52所示。图3-52 用户登录页面<br/><br/>     (2)再创建一个用户注册的页面,拖放一个用户注册注册控件到<br/><br/>     页面中。在用户登录页面中增加一个超链接,可以链接到用户注册页<br/><br/>     面,效果如图3-53所示。<br/><br/>     图3-53 用户注册页面<br/><br/>     (3)创建一个用户成功登录的页面,把显示用户名和状态的控件<br/><br/>     拖放到此页面中。<br/><br/>     至此,就完成了一个用户登录系统。第4章 ASP.NET对象编程<br/><br/>     本章主要讲解ASP.NET中几个数据持久性对象和数据访问对象的使<br/><br/>     用。在本章的后续部分列举了投票系统实例,以重点说明如何使用相关<br/><br/>     类访问Access数据库,并使用数据持久性对象保存数据。投票功能实现<br/><br/>     流程图如图4-1所示。<br/><br/>     图4-1 投票功能实现流程图4.1 ASP.NET的数据持久性对象<br/><br/>     ASP.NET应用程序以页面为基础。在开发过程中,很多情况下会遇<br/><br/>     到页面之间数据共享的问题。在ASP.NET中已经提供了一些可以持久化<br/><br/>     页面间数据的对象,这些对象包括Session、Cookies、Application以及<br/><br/>     ViewState等。本节将具体介绍这些对象和使用方法。<br/><br/>     4.1.1 Session对象简介<br/><br/>     Session是ASP和ASP.NET中用于保持状态的基于Web服务器的方<br/><br/>     法。Session允许通过将对象存储在 Web 服务器的内存中在整个用户会<br/><br/>     话过程中保持任何对象的持久性。Session 通常用于执行以下操作。<br/><br/>     (1)存储需要在整个用户会话过程中保持其状态的信息。例如,登录信息或用户浏览Web应用程序时需要的其他信息。<br/><br/>     (2)存储只需要在页重新加载过程中或按功能分组的一组页之间<br/><br/>     保持其状态的对象。<br/><br/>     Session 的优点是它在 Web 服务器上保持用户的状态信息,可供在<br/><br/>     任何时间从任何页访问这些信息。因为浏览器并不需要存储任何这些信<br/><br/>     息,所以可以使用任何浏览器,甚至可以使用PDA或手机这样的浏览器<br/><br/>     设备。<br/><br/>     下面的示例创建了一个名为“UserID”的Session对象,并为它赋值,然后将Session对象以字符串的形式输出。代码如下:<br/><br/>     Session[UserID] = admin;<br/><br/>     输出创建的Session对象的值<br/><br/>     输出结果为字符串adminResponse.Write(Session[Us ......</div> <!--DuYiHuaAdd EndContent--></div> <div id="txtThisUrl"><br/>    <a href="http://www.100md.com/html/file/202011/175681.htm" target="_blank">http://www.100md.com/html/file/202011/175681.htm</a></div> <div id="txttips"><br/>您现在查看是摘要介绍页,<a href="http://www.100md.com/about/help.htm"> 详见PDF附件(23545KB,606页)</a>。</div> <script language="javascript" type="text/javascript" src="http://www.100md.com/comm/v2019/login.js"></script> <script language="javascript" type="text/javascript" src="http://www.100md.com/comm/v2019/after.js"></script> <div id="theRInfo"><script language="javascript" type="text/javascript" src="http://www.100md.com/rjs/file/202011/175681.js"></script><script language="javascript" type="text/javascript" src="http://www.100md.com/comm/v2019/related.js"></script></div> </div><div id="right"><script language="javascript" type="text/javascript" src="http://www.100md.com/comm/v2019/right.js"></script></div> </div><div id="copyright"><script language="javascript" type="text/javascript" src="http://www.100md.com/comm/v2019/copyright.js"></script></div></body></html>