目录

第 1章 ASP.NET运行及开发环境 ·· 1 

1.1  ASP.NET概述 ··· 1 
1.1.1静态页面和动态页面 ········ 1 
1.1.2 .NET Framework ······ 1 
1.1.3 
ASP.NET特性· 2 

1.1.4 
ASP.NET的开发模式 ······· 2 


1.2  IIS····· 3 
1.2.1 
IIS 10的安装 ·· 3 

1.2.2 
IIS 10中的网站、Web应用程序和虚拟目录 ······ 4 


1.2.3 IIS Express······· 7 
1.3  Visual Studio Community 2019 ····· 8 
1.
3.1开发环境概览 · 8 

1.
3.2使用解决方案管理 VSC 2019中新建的网站 ···· 10 

1.3.3发布 
Web应用 ······· 12 

1.3.4复制网站 
······· 14 


1.4  
小结 14 

1.5  
习题 15 


第 2章 ASP.NET网站文件、 jQuery和 Bootstrap· 17 
2.1  
.html文件和 XHTML5······ 17 

2.1.1 
.html文件结构 ······· 17 

2.1.2常用的 
XHTML5元素 ··· 18 实例 2-1  认识常用的 XHTML5元素········ 19 



2.2  
.aspx文件 20 

2.
2.1单文件页模型 ········ 21 实例 2-2  熟悉单文件页模型 ··· 21 

2.
2.2代码隐藏页模型 ···· 22 实例 2-3  熟悉代码隐藏页模型 ········ 22 



2.3  
.css文件和 CSS常识 ········ 23 

2.3.1定义 
CSS3样式 ····· 23 

2.3.2 
CSS3样式位置 ······ 24 实例 2-4  运用页面样式 ·· 25 实例 2-5  运用外部样式表 ······· 26 



2.4  	
.js文件和 JavaScript常识 · 27 

2.4.1 
JavaScript代码位置········ 27 实例 2-6  熟悉<head>元素中的 JavaScript代码  27 实例 2-7  熟悉<body>元素中的 JavaScript代码  28 实例 2-8  运用独立的 .js文件··· 28 

2.4.2 
JavaScript运用实例········ 29 实例 2-9  实现图片动态变化效果 ····· 29 实例 2-10实现一个简易时钟 · 30 





2.5  	jQuery······ 31 
2.5.1 
jQuery基础语法 ···· 31 

2.5.2 
jQuery运用实例 ···· 32 实例 2-11  利用 jQuery管理 XHTML元素········ 32 实例 2-12利用 jQuery实现一个时间数据来源于服务器端的时钟 ····· 34 


2.6  	.xml文件和 XML常识 ····· 35 实例 2-13表达一个 XML格式的早餐菜单 ······ 35 
2.7  	Web.config········ 36 
2.8  	Global.asax······· 37 
2.9  	
Bootstrap · 37 实例 2-14利用 Bootstrap设计表单 · 38 

2.10小结
······· 39 

2.11  
习题······· 40 


第 3章 C#和 ASP.NET的结合 ······ 42 
3.1  	
C#概述 ···· 42 

3.2  	
.NET Framework命名空间  42 

3.3  	
编程规范 · 43 

3.3.1程序注释 
······· 43 

3.3.2命名规则 
······· 43 



3.4  	
常量与变量 ······ 44 

3.4.1常量声明 
······· 44 

3.4.2变量声明 
······· 45 

3.4.3修饰符 
·· 45 

3.
4.4局部变量作用范围  45 



3.5  	
数据类型 · 46 

3.5.1值类型 
·· 46 实例 3-1  运用枚举类型变量 ··· 47 

3.5.2引用类型 
······· 48 

目录 V 

3.
5.3装箱和拆箱 ··· 49 



3.6  
运算符····· 50 

3.7  
流程控制 · 51 

3.7.1选择结构 
······· 51 实例 3-2  运用 switch语句······· 52 

3.7.2循环结构 
······· 53 实例 3-3  运用 while语句 ········ 53 实例 3-4  运用 for语句 ··· 54 实例 3-5  运用 foreach语句 ····· 55 

3.7.3异常处理 
······· 56 实例 3-6  运用 throw语句········ 56 实例 3-7  运用 try…catch…finally结构····· 57 



3.8  
自定义 ASP.NET类·· 59 

3.8.1类的常识 
······· 59 

3.8.2属性
······ 60 实例 3-8  定义 Account类的属性 ····· 60 

3.8.3构造函数 
······· 61 实例 3-9  定义 Account类的构造函数 ······ 61 

3.8.4方法
······ 61 实例 3-10定义 Account类的存款和取款方法 ·· 61 实例 3-11  结合 Account类和 ASP.NET页面 ···· 62 

3.8.5事件
······ 63 实例 3-12在 AccountEvent类中增加账户金额不足事件并运用事件 · 63 

3.8.6继承
······ 65 实例 3-13实现继承类 ···· 65 



3.9  
ASP.NET页面调试··· 65 

3.10 
C#其他重要特性 ····· 66 

3.
10.1自动属性 ····· 66 

3.
10.2隐含类型局部变量 ········ 67 

3.
10.3匿名类型 ····· 67 

3.
10.4对象与集合初始化器 ···· 68 

3.
10.5扩展方法 ····· 68 

3.10.6
  Lambda表达式 ···· 69 



3.11  
小结······· 70 

3.12习题
······· 70 



第 4章 ASP.NET标准控件 ··· 73 
4.1  
ASP.NET页面事件处理概述 ····· 73 

4.1.1 
ASP.NET页面事件 73 

4.1.2 
IsPostBack属性 ····· 73 实例 4-1  运用 IsPostBack属性 ········ 74 



4.2  
ASP.NET服务器控件概述  75 

4.2.1 
HTML服务器控件简介 · 75 

4.2.2 
Web服务器控件简介 ····· 75 



4.3  
常用 ASP.NET标准控件 ··· 75 

4.3.1 
Label控件 ····· 76 实例 4-2  通过键盘快捷键激活特定文本框 ······· 76 

4.3.2 
TextBox控件· 77 实例 4-3  综合运用 TextBox控件····· 77 

4.3.3 
Button、LinkButton和 ImageButton控件  79 实例 4-4  利用 Button控件执行客户端脚本 ······ 79 

4.3.4 
DropDownList控件 ········ 80 实例 4-5  实现联动的下拉列表 ········ 81 

4.3.5 
ListBox控件 · 83 实例 4-6  实现数据项在 ListBox控件之间的移动 ····· 83 

4.3.6  
CheckBox和 CheckBoxList控件 ····· 84 实例 4-7  运用 CheckBoxList控件 ··· 85 

4.3.7 
RadioButton和 RadioButtonList控件 ······· 86 

4.3.8 
Image和 ImageMap控件 ········ 86 实例 4-8  利用 ImageMap控件设计导航栏 ········ 87 

4.3.9 
HyperLink控件······ 88 实例 4-9  组合使用 HyperLink和 Image控件···· 88 

4.3.10 
Table控件 ··· 88 实例 4-10动态生成表格  89 

4.3.11 
Panel和 PlaceHolder控件 ····· 90 实例 4-11  利用 Panel实现简易注册页面 · 90 实例 4-12利用 PlaceHolder动态添加控件 ······· 92 



4.4  
小结 93 



4.5  习题 94 第 5章 ASP.NET窗体验证 ··· 96 
5.1  
窗体验证概述 ·· 96 

5.2  
ASP.NET服务器验证控件  97 

5.2.1 
RequiredFieldValidator控件 ···· 97 实例 5-1  禁止空数据且同时要改变初始值 ······· 98 

5.2.2 
CompareValidator控件 ··· 99 实例 5-2  运用 CompareValidator控件 ······ 99 

5.2.3 
RangeValidator控件······ 100 实例 5-3  运用 RangeValidator控件 100 

5.2.4 
RegularExpressionValidator控件 ···· 101 实例 5-4  验证电子邮件地址 · 102 

目录 VII 

5.2.5  
CustomValidator控件···· 103 实例 5-5  验证必须输入一个偶数 ··· 103 

5.2.6 
ValidationSummary控件········ 106 实例 5-6  综合运用验证控件 · 106 



5.3  	
小结······· 108 

5.4  	
习题······· 109



第 6章 HTTP请求、响应及状态管理 ··111 
6.1  	
HTTP请求 ······111实例 6-1  利用 QueryString在页面间传递数据信息 ··111实例 6-2  利用 ServerVariables和 Browser返回服务器端和客户端信息 ······113 

6.2  	
HTTP响应 ······114 实例 6-3  利用 Write()方法输出 XHTML文本 ·114 实例 6-4  利用 Redirect()方法重定向页面 115 

6.3  	
HttpServerUtility ······117 实例 6-5  运用 HttpServerUtility对象·······117 

6.4  	
跨页面提交 ·····118 实例 6-6  运用跨页面提交技术 ·······119 

6.5  	
状态管理 ········ 120 

6.5.1 ViewState····· 120 
6.5.2 
HiddenField控件 · 121 

6.5.3 
Cookie  121 实例 6-7  利用 Cookie限制页面访问 ······ 122 

6.5.4 
Session 124 实例 6-8  利用 Session限制页面访问 ······ 125 

6.5.5 
Application ·· 126 实例 6-9  统计网站在线人数 · 127 



6.6  	
小结······· 128 

6.7  	
习题······· 128


第 7章数据访问  131 
7.1  	
数据访问概述  131 

7.2  	
建立 SQL Server Express数据库 ······ 132 

7.3  	
使用数据源控件实现数据访问  133 实例 7-1  利用 LinqDataSource和 GridView显示表数据 ·· 134 

7.4  	
使用 LINQ实现数据访问 ········ 136 

7.
4.1语言集成查询 LINQ ····· 136 

7.4.2 
Entity Framework概述 · 137 

7.4.3基于 
Entity Framework利用 LINQ查询数据 ·· 138 实例 7-2  基于 Entity Framework利用 LINQ实现投影····· 138 实例 7-3  基于 Entity Framework利用 LINQ实现选择····· 139 

实例 7-4  基于 Entity Framework利用 LINQ实现排序····· 139 实例 7-5  基于 Entity Framework利用 LINQ实现分组····· 140 实例 7-6  基于 Entity Framework利用 LINQ实现聚合操作 ······ 140 实例 7-7  基于 Entity Framework利用 LINQ实现直接引用对象连接 ········ 141 实例 7-8  基于 Entity Framework利用 LINQ实现连接····· 142 实例 7-9  基于 Entity Framework利用 LINQ实现模糊查询 ······ 142 

7.4.4利用 
Entity Framework管理数据 ··· 142 实例 7-10利用 Entity Framework插入数据 ···· 143 实例 7-11  利用 Entity Framework修改数据 ···· 143 实例 7-12利用 Entity Framework删除数据 ···· 144 实例 7-13利用 Entity Framework调用存储过程 ····· 144 

7.4.5 
LINQ to XML概述······· 145 

7.4.6利用 
LINQ to XML管理 XML文档······· 145 实例 7-14利用 LINQ to XML创建 XML文档········ 145 实例 7-15利用 LINQ to XML查询指定属性的元素 ········ 146 实例 7-16利用 LINQ to XML插入元素  147 实例 7-17利用 LINQ to XML修改元素  147 实例 7-18利用 LINQ to XML删除元素  148 



7.5  	
小结······· 148 

7.6  	
习题······· 149



第 8章数据绑定  151 
8.1  	
数据绑定概述  151 

8.2  	
ListControl类控件 ·· 151 实例 8-1  结合使用 DropDownList和 LINQ显示数据······ 152 实例 8-2  根据选择项填充列表框内容 ···· 153 

8.3  	
GridView控件 ········ 154 

8.
3.1分页和排序 · 155 实例 8-3  分页和排序 GridView中数据 ·· 155 

8.
3.2定制数据绑定列 ·· 157 实例 8-4  自定义 GridView数据绑定列 ·· 157 

8.
3.3使用模板列 · 159 实例 8-5  运用 GridView模板列····· 160 

8.3.4利用 
GridView编辑、删除数据 ···· 162 实例 8-6  为 GridView中“删除”链接按钮添加客户端提示信息 ···· 162 实例 8-7  结合 GridView和独立页修改数据 ··· 164 

8.
3.5显示主从表 · 167 实例 8-8  在同一页显示主从表 ······ 167 实例 8-9  在不同页显示主从表 ······ 169 



8.4  	
Repeater控件· 172 实例 8-10利用 Repeater控件展示数据列表 ··· 172 

目录 IX 

8.5  	
小结······· 173 

8.6  	
习题······· 174



第 9章 ASP.NET三层架构 · 176 
9.1  	
ASP.NET三层架构概述 ·· 176 

9.2  	
搭建 ASP.NET三层架构 · 177 实例 9-1  搭建基于 ASP.NET三层架构的 MyPetShop ······ 177 

9.3  	
基于 ASP.NET三层架构的用户管理  180 

9.3.1用户注册 
····· 180 实例 9-2  实现 MyPetShop的用户注册功能 ···· 180 

9.3.2用户登录 
····· 185 实例 9-3  实现 MyPetShop的用户登录功能 ···· 185 

9.
3.3用户登录状态和权限 ···· 188 实例 9-4  根据不同用户呈现不同的登录状态和权限 ······· 188 

9.
3.4用户密码修改 ······ 190 实例 9-5  修改已登录一般用户的密码 ···· 191 

9.
3.5用户密码重置 ······ 193 实例 9-6  重置用户密码  194 



9.4  	
小结······· 199 

9.5  	
习题······· 199


第 10章主题、母版和用户控件 ·· 201 
10.1主题
····· 201 

10.
1.1主题概述 · 201 

10.
1.2自定义主题 ······ 201 

10.
1.3使用主题 · 202 实例 10-1  动态切换主题 ····· 203 



10.2母版页 
· 205 

10.
2.1母版页概述 ······ 205 

10.
2.2创建母版页 ······ 205 实例 10-2  创建母版页 205 

10.
2.3创建内容页 ······ 206 实例 10-3  创建内容页 206 



10.3用户控件 
······ 207 

10.
3.1用户控件概述 ·· 207 

10.
3.2创建用户控件 ·· 208 

10.
3.3使用用户控件 ·· 209 实例 10-4  使用用户控件 ····· 209 



10.4小结
····· 210 

10.5习题
····· 210 



第 11章网站导航 ······· 212 
11.1	网站地图 
······ 212 

11.
1.1网站地图文件 ··· 212 实例 11-1创建网站地图 ····· 213 

11.
1.2嵌套网站地图文件 ···· 214 实例 11-2创建嵌套网站地图 ······ 214 



11.2 	
SiteMapPath控件显示导航 ···· 215 实例 11-3利用 SiteMapPath控件显示导航 ·· 215 

11.3 	
TreeView控件显示导航  216 

11.3.1 
TreeView控件·· 216 实例 11-4运用 TreeView控件····· 217 

11.3.2使用 
TreeView控件实现导航 ···· 220 实例 11-5利用 TreeView控件显示导航 ······· 220 



11.4 	
Menu控件显示导航 ······ 221 实例 11-6利用 Menu控件显示导航菜单 ····· 221 

11.
5	在母版页中使用网站导航 ······ 221 实例 11-7实现基于母版页的网站导航  222 

11.6	小结
····· 223 


11.7习题····· 223 第 12章 ASP.NET Ajax······· 225 
12.1 	
Ajax基础 ····· 225 

12.1.1 
Ajax概述  225 

12.1.2  
ASP.NET Ajax技术 ·· 226 



12.2  	
ASP.NET Ajax服务器控件 ····· 226 

12.2.1
  ScriptManager控件··· 226 

12.2.2
  UpdatePanel控件 ······ 228 实例 12-1 使用内部按钮刷新 UpdatePanel控件···· 229 实例 12-2  使用外部按钮刷新 UpdatePanel控件···· 230 实例 12-3  在同一个页面中使用多个 UpdatePanel控件· 232 

12.2.3 
Timer控件········ 233 实例 12-4  运用 Timer控件 · 234 

12.2.4  
UpdateProgress控件 · 236 实例 12-5  运用 UpdateProgress控件···· 236 



12.3 	
AjaxControlToolkit程序包 ····· 237 实例 12-6  运用 CalendarExtender控件· 240 实例 12-7  运用 PasswordStrength控件· 241 

12.4	小结
····· 242 

12.5	习题
····· 243 



第 13章 Web服务 ······ 245 
13.1	
  Web服务及其运用 ········ 245 

13.1.1
  Web服务概述 ·· 245 

13.1.2建立 
ASP.NET Web服务 ··· 246 实例 13-1  建立 ASP.NET Web服务······ 246 

13.1.3调用 
ASP.NET Web服务 ··· 248 实例 13-2  调用 ASP.NET Web服务······ 249 实例 13-3  运用基于 Web服务的 AutoCompleteExtender控件 ········ 250 



13.2	小结
····· 253 

13.3	习题
····· 253 


第 14章文件处理 ······· 255 
14.
1	驱动器、文件夹和文件操作 ·· 255 

14.
1.1获取驱动器信息 ········ 255 实例 14-1  显示 Web服务器上所有驱动器的信息 · 255 

14.
1.2文件夹操作 ······ 257 实例 14-2  计算指定文件夹的大小 ······· 258 

14.
1.3文件操作 · 260 实例 14-3  文件的创建、复制、删除和移动操作 ·· 262 



14.2	读写文件 
······ 265 

14.2.1
  Stream类· 265 实例 14-4  利用 FileStream类读写文件  267 

14.2.2 
Reader和 Writer类 ··· 269 实例 14-5  利用 StreamReader和 StreamWriter读写文本文件  270 实例 14-6  利用 BinaryReader和 BinaryWriter读写二进制数据文件 ······· 271 



14.3	文件上传 
······ 273 实例 14-7  利用 FileUpload实现文件上传 ····· 273 

14.4	小结
····· 275 

14.5	习题
····· 275 


第 15章 MyPetShop应用程序 ····· 277 
15.
1	系统总体设计和开发思路 ······ 277 

15.
1.1系统功能模块设计 ···· 277 

15.
1.2用户控件设计 ·· 279 

15.
1.3系统数据库总体设计  279 

15.1.4
  Web.config配置文件  279 

15.1.5基于 
VSC 2019开发 MyPetShop应用程序的总体思路  280 



15.2 	
MyPetShop.mdf数据库设计··· 281 

15.
2.1数据表设计 ······ 281 

15.
2.2数据表联系设计 ········ 283 



15.
3用户控件设计 ······· 284 

15.
3.1“热销商品自动定时刷新”用户控件 · 284 

15.
3.2“商品分类列表”用户控件 ········ 284 

15.
3.3“最新商品列表”用户控件 ········ 285 

15.
3.4“商品分类及商品导航”用户控件 ····· 285 

15.
3.5“网站导航”用户控件 ······· 285 

15.
3.6“用户状态”用户控件 ······· 285 

15.
3.7“天气预报”用户控件 ······· 286 



15.
4前台显示页面设计 ········ 286 

15.4.1母版页 
····· 286 

15.4.2首页 
 287 

15.
4.3商品详细信息页面 ···· 288 

15.
4.4商品搜索页面 ·· 288 



15.
5用户注册和登录模块设计 ······ 289 

15.
5.1注册新用户 ······ 289 

15.
5.2用户登录 · 290 

15.
5.3修改用户密码 ·· 290 

15.
5.4找回用户密码 ·· 291 

15.
5.5退出系统 · 291 



15.
6购物车模块设计 ··· 291 

15.
6.1购物车存储设计与实现 ····· 291 

15.
6.2购物车页面设计 ········ 292 

15.
6.3购物车功能的设计与实现 · 292 



15.
7订单处理模块设计 ········ 293 

15.
7.1创建订单 · 293 

15.
7.2查看订单 · 294 



15.
8后台管理模块设计 ········ 294 

15.
8.1商品分类管理 ·· 294 

15.
8.2供应商信息管理 ········ 294 

15.
8.3商品信息管理 ·· 295 

15.
8.4订单管理 · 296 



15.9小结
····· 298 

15.10  
习题··· 299