第1章 ASP.NET概述 1
1.1 是升级还是创新 1
目录 1
1.3 安装.NET 2
1.2 开始使用ASP.NET 2
1.3.2 运行范例 3
1.3.1 配置范例 3
1.4 Visual Studio.NET 2003 5
1.5 在Visual Studio.NET 2003中创建ASP.NET应用程序 7
1.6.1 使用新技术的原因 8
1.6 ASP.NET与ASP的区别 8
1.6.2 ASP.NET的优点 9
1.7.2 页面范例 18
1.7.1 创建Web站点 18
1.7 编写ASP.NET页面 18
1.8 本章小结 21
第2章 认识.NET Framework 22
2.1.2 .NET战略 23
2.1.1 .NET的组成 23
2.1 .NET简介 23
2.1.3 Windows DNA存在的问题 25
2.1.4 需要.NET的原因 27
2.2.1 CLR服务 31
2.2 公共语言运行库(CLR) 31
2.2.3 使用对象 32
2.2.2 通用功能 32
2.2.4 命名空间 33
2.2.5 通用类型系统 34
2.2.6 程序集——版本化和安全性代码 40
2.2.8 中间语言 44
2.2.7 CLR和COM 44
2.2.9 应用程序域 45
2.3 .NET Framework详解 46
2.3.1 应用程序开发技术 47
2.3.3 基类库 49
2.3.2 类库 49
2.4 ASP.NET的设计目标 50
2.4.2 性能 51
2.4.1 消除对脚本引擎的依赖性 51
2.4.4 便于部署 52
2.4.3 在ASP基础上的升级 52
2.4.5 强大的工具支持 53
2.4.6 更简单、更灵活的配置 54
2.4.7 分解的“开放”设计 55
2.4.8 与语言无关 57
2.4.10 功能强大的身份确认模型 58
2.4.9 代码更少、更简练、更易于维护 58
2.5 本章小结 59
2.4.11 正确认识错误的存在 59
第3章 .NET语言 60
3.1.2 Visual Studio还是Notepad 61
3.1.1 VBScript何去何从 61
3.1 所提供的语言 61
3.2.1 面向对象功能 62
3.2 Visual Basic.NET 62
3.2.2 语言的变化 71
3.3 C# 75
3.3.1 类 76
3.3.2 方法 77
3.3.3 属性 78
3.3.5 析构函数 79
3.3.4 构造函数 79
3.3.6 继承性 80
3.3.7 接口 81
3.3.9 异常处理 82
3.3.8 引用 82
3.3.10 XML文档 84
3.3.11 非安全代码 87
3.4 JScript.NET 88
3.3.12 运算符重载 88
3.7 所支持的其他语言 89
3.6 Visual J#.NET 89
3.5 C++ 89
3.8 .NET语言编译器 90
3.9.1 通用API 93
3.9 CLR的优点 93
3.9.2 通用类型 94
3.9.3 跨语言继承性 95
3.10.2 后期绑定代码 97
3.10.1 语言 97
3.9.4 跨语言调试和记录 97
3.10 性能问题 97
3.11.2 函数和过程 98
3.11.1 变量声明 98
3.11 常用范例 98
3.11.3 语法的区别 99
3.11.4 循环 100
3.11.5 类型转换 102
3.12 本章小结 103
4.1.1 以前的编码方式 104
4.1 编码问题 104
第4章 编写ASP.NET页面 104
4.1.2 ASP.NET页面中的编码 106
4.1.3 回送识别 110
4.2 Page类 112
4.2.1 HttpRequest对象 115
4.2.2 HttpResponse对象 117
4.2.3 页面处理步骤 120
4.2.4 页面状态 129
4.2.5 页面指令 130
4.3.1 开发工具中的后台编码 135
4.3 后台编码 135
4.3.2 使用后台编码 136
4.3.3 在ASP.NET页面中继承后台编码类文件 138
4.4.1 输出高速缓存范例 139
4.4 页面高速缓存 139
4.4.2 通过测览器实现高速缓存 140
4.6 用户控件 141
4.5 智能导航 141
4.6.1 建立用户控件的方法 142
4.6.2 用户控件属性 146
4.6.3 用户控件事件 147
4.6.4 用户控件的后台编码 148
4.6.5 用户控件的局部页面高速缓存 149
4.7 本章小结 151
5.1.1 再论ASP.NET页面模型 152
5.1 服务器控件的概念 152
第5章 服务器控件与验证控件 152
5.1.2 练习使用服务器控件 155
5.1.3 关于范例应用程序 156
5.1.4 使用服务器控件的场合 157
5.1.5 ASP.NET中的可用控件 158
5.2.1 HtmlControl基类 159
5.2 HTML服务器控件 159
5.2.2 HTMLGenericControl类 160
5.2.3 HTML控件的专有类 161
5.2.4 HTML服务器控件的用法 163
5.2.5 HTML服务器控件范例 164
5.3.1 输入验证控件的作用 181
5.3 ASP.NET输入验证控件 181
5.3.3 验证控件的特有成员 182
5.3.2 BaseValidator类 182
5.3.4 验证控件的用法 183
5.4 本章小结 190
6.1 基本的ASP.NET Web Form控件 191
第6章 ASP.NET Web Form控件 191
6.1.2 基类WebControl 192
6.1.1 为什么要有另外一组控件 192
6.1.3 特殊的Web Form控件类 194
6.1.4 使用Web Form控件 195
6.1.5 ASP Web Form控件范例 201
6.2.1 ListControl基类 216
6.2 ASP.NET列表控件 216
6.2.2 特殊的列表控件类 217
6.2.3 使用ASP列表控件 218
6.3 ASP.NET中的其他多功能控件 223
6.4 本章小结 228
7.1 获取范例文件 229
第7章 列表控件和数据绑定 229
7.2.1 在服务器上完成所有操作 230
7.2 数据绑定的相关概念 230
7.2.2 显示数据——ASP和ASP.NET 231
7.2.4 单值数据绑定 232
7.2.3 数据绑定的语法 232
7.2.5 重复值数据绑定 236
7.2.6 重复值数据绑定的简单范例 243
7.3 添加样式和模板 256
7.3.1 使用样式属性 256
7.3.2 给DataGrid控件添加样式 257
7.3.3 对数据绑定控件使用模板 258
7.3.4 处理数据绑定事件 273
7.3.5 对DataGrid中的行进行排序和筛选 275
7.3.6 DataGrid中的自动分页 280
7.4 使用数据绑定控件编辑数据 284
7.4.1 利用DataGrid控件编辑数据 284
7.4.2 利用DataList控件选择和编辑数据 289
7.5 本章小结 295
第8章 .NET数据管理引论 296
8.1 数据存储和数据访问 296
8.1.1 转向分布式环境 297
8.1.2 XML——将来的数据格式 297
8.1.3 是否是另一项数据访问技术 298
8.1.4 .NET意味着断开数据的连接 299
8.1.6 .NET意味着托管代码 301
8.1.7 .NET意味着新的编程模型 301
8.1.5 .NET意味着XML数据 301
8.2 .NET中的数据管理 302
8.2.1 数据管理的系统命名空间 302
8.2.2 导入所需的命名空间 303
8.3 基本的ADO.NET类 305
8.3.1 ADO和ADO.NET的技术比较 306
8.3.2 Connection类 307
8.3.3 Command类 308
8.3.4 DataAdapter类 308
8.3.5 DataSet类 310
8.3.6 DataTable类 311
8.3.7 DataView类 312
8.3.8 DataReader类 313
8.3.9 DataReader和DataSet的选取 315
8.3.10 .NET中的关系数据提供程序 315
8.4 .NET中常见的数据访问任务 316
8.4.1 在自己的系统上创建范例 317
8.4.2 ASP.NET与IIS 6.0和Windows Server…2003 318
8.4.3 使用DataReader对象 319
8.4.4 一个简单的DataSet范例 321
8.4.5 含有多个表的DataSet范例 323
8.4.6 返回DataSet对象的用户控件 327
8.5 .NET中的XML引论 328
8.5.1 基本的XML对象 328
8.5.2 XPathNavigator类 331
8.5.3 XmlTextWriter类 333
8.5.4 XmlReader类 333
8.5.5 XmlValidatingReader类 334
8.5.6 XslTransform类 335
8.6 .NET中常见的XML任务 335
8.6.1 通过DOM的XML文档访问操作 336
8.6.2 使用XPathNavigator对象的XML文档访问操作 338
8.6.3 搜索XML文档 342
8.6.4 XMLTextWriter对象范例 344
8.6.5 XMLTextReader对象范例 347
8.6.6 XSLTransform对象范例 349
8.7 选择一种数据存储的方法 350
8.7.1 关键在于访问和处理 351
8.7.2 查询的新方法 351
8.7.4 .NET是一套伟大的解决方案 352
8.8 本章小结 352
8.7.3 传输协议是大势所趋 352
第9章 处理关系数据 353
9.1 获得范例文件 353
9.2 访问复杂数据 354
9.2.1 利用DataReader访问复杂数据 354
9.2.2 通过DataSet访问复杂数据 356
9.2.3 访问和显示嵌套的数据 357
9.2.4 使用数据库的存储过程 360
9.3 处理DataTable对象 368
9.3.1 创建和填充新DataTable的代码 368
9.3.2 在表中添加数据行 369
9.3.3 为DataSet添加表 370
9.3.4 管理约束和默认值 370
9.3.5 指定主键和外键 373
9.3.6 添加、修改、移去和删除行 377
9.3.7 处理DataTable事件 384
9.3.8 使用表和列映射 388
9.4 数据的排序和筛选 391
9.4.1 DataTable对象中的排序和筛选 391
9.4.2 DataView对象中的排序和筛选 396
9.5 本章小结 398
第10章 关系数据源的更新 399
10.1 获得范例文件 399
10.2 利用Command对象更新数据 400
10.2.1 使用Command对象和SQL语句 400
10.2.2 使用存储过程和Command对象 403
10.3 使用事务处理更新数据源 406
10.3.1 数据库事务 407
10.3.2 基于连接的事务处理 410
10.4 更新DataSet对象中的数据 414
10.4.1 深入到DataAdapter对象内部 414
10.4.2 使用DataAdapter.Update方法 419
10.4.3 使用存储过程更新DataSet 424
10.4.4 DataAdapter中的更新事件 431
10.5 对并发数据更新的管理 435
10.5.1 避免出现并发错误 436
10.5.2 一个并发错误范例 436
10.5.3 仅更新已改变的列 438
10.5.4 利用RowUpdated事件捕获错误 443
10.5.5 更新完成后查找错误 452
10.6 本章小结 456
第11章 .NET中的XML数据管理 457
11.1 获取范例文件 457
11.2 XML和DataSet对象 458
11.2.1 DataSet基于XML的方法 458
11.2.2 将数据从DataSet写入XML文件 459
11.2.3 将数据从XML文件读入DataSet 462
11.2.4 以字符串的形式从DataSet中得到XML 465
11.2.5 DataSet中的嵌套XML和关系数据 466
11.3 处理XmlDataDocument对象 470
11.4 直接从SQL Server中读取XML数据 476
11.5 验证XML文档的有效性 478
11.6 创建和编辑XML文档 486
11.7 使用XSL和XSLT转换 492
11.7.1 一个XSL转换的范例 492
11.7.2 用XmlResolver加载样式表和模式 496
11.8 本章小结 498
第12章 Web应用程序和global.asax 499
12.1 IIS Web根目录以及应用程序 499
12.1.1 创建IIS虚拟目录 500
12.1.2 把文件夹标记为应用程序 501
12.1.3 Windows Server 2003 503
12.2 ASP.NET Web应用程序 506
12.2.1 注册组件 506
12.2.2 应用程序代码:global.asax 510
12.3 应用程序状态的管理 514
12.3.1 Session——管理用户状态 515
12.3.2 Application——管理应用程序状态 517
12.3.3 Cache——管理瞬时状态 519
12.4 应用程序事件 528
12.4.1 事件的语法和原型 529
12.4.2 支持的事件 529
12.4.3 事件范例 532
12.5 高级主题 537
12.5.1 静态变量 538
12.5.2 为global.asax使用自己的基类 539
12.5.3 将文件扩展名映射到ASP.NET中 540
12.5.4 异步应用程序事件 542
12.6 本章小结 547
13.1 配置综述 549
第13章 ASP.NET的配置 549
13.1.1 ASP的配置 550
13.1.2 ASP.NET的配置 551
13.1.3 配置文件格式 554
13.2 常用的配置设置 558
13.2.1 通用配置设置 558
13.2.2 页面配置 561
13.3 跟踪 571
13.3.1 传统的ASP跟踪 571
13.3.2 ASP.NET跟踪 572
13.3.3 查看跟踪输出 572
13.3.4 跟踪配置设置 574
13.4 定制错误 575
13.4.1 错误模式 576
13.4.2 总是显示ASP.NET错误页面 577
13.4.3 定制错误页面 577
13.4.4 配置IIS和ASP.NET来支持相同的错误页面 578
13.5 身份验证和授权 579
13.5.1 身份验证 579
13.5.2 护照验证 581
13.5.3 授权 582
13.6 Web服务 582
13.6.1 国际化和编码 583
13.6.2 编译选项 585
13.6.3 执行身份的控制 590
13.6.4 用HTTP处理程序来扩展ASP.NET 592
13.6.5 用HTTP模块扩展ASP.NET 596
13.6.6 配置ASP.工作进程 597
13.6.7 机器密钥 606
13.7 高级问题 607
13.7.1 指定位置 607
13.7.2 设置路径 608
13.7.3 锁定配置设置 608
13.7.4 定制配置处理程序 611
13.8 本章小结 613
14.1 Windows 2000和IIS安全性概述 614
14.1.1 安全性需求 614
第14章 保障ASP.NET应用程序的安全 614
14.1.2 安全性概念 615
14.1.3 Windows的身份验证过程 618
14.1.4 在IIS中验证身份 619
14.1.5 在Windows中授权 623
14.1.6 在IIS中授权 624
14.2 ASP.NET安全概述 624
14.2.1 ASP.NET安全进程 625
14.2.2 ASP.NET模仿 625
14.2.3 Windows Server 2003和IIS 6.0 626
14.2.4 ASP.NET安全选项 630
14.3.1 角色和身份概述 647
14.3.2 获取用户的身份和角色 647
14.3 程序设计的安全和个性化处理 647
14.4 ASP.NET安全范例 649
14.4.1 获取范例文件 649
14.4.2 在服务器上建立范例 650
14.4.3 Windows身份验证范例 652
14.4.4 基于表单的身份验证范例 655
14.4.5 简单的个性化范例 667
14.5 ASP.NET进程账户和信任级别 671
14.5.1 指定进程账户 671
14.5.2 指定信任级别 674
14.6 本章小结 675
第15章 处理集合和列表 677
15.1 处理集合和列表 677
15.2 System.Collections核心接口 678
15.2.1 IEnumerable和IEnumerator接口 679
15.2.2 ICollection和IList接口 682
15.2.3 列表排序——IComparer和IComparable 689
15.2.4 ICollection接口 694
15.2.5 处理字典对象 699
15.3 System.Collections.Specialized命名空间 711
15.3.1 StringCollection类 711
15.3.2 StringDictionary类 712
15.4 强制类型的集合 712
15.4.1 定义定制类型 713
15.4.2 创建集合类 714
15.4.3 使用集合类 716
15.4.4 DictionaryBase和CollectionBase类 717
15.4.5 可任意处理的枚举对象 719
15.5 本章小结 720
16.1 目录和文件的处理 721
16.1.1 类的概述 721
第16章 使用其他基类 721
16.1.2 DirectoryInfo类和Directory类 722
16.1.3 File类和FileInfo类 724
16.1.4 常见的目录和文件操作 725
16.2 正则表达式 756
16.2.1 模式匹配 756
16.2.2 正则表达式类 758
16.3 本章小结 762
第17章 .NET组件 764
17.1 编写业务对象 764
17.1.1 创建对象 765
17.1.2 编译类 776
17.1.3 测试类 777
17.2 跨语言继承 783
17.2.1 跨语言继承范例 783
17.2.2 .NET中的事务处理 786
17.2.3 服务组件 787
17.3 部署组件 791
17.3.1 什么是程序集 791
17.3.2 程序集和版本问题 792
17.3.3 程序集清单 793
17.3.4 并排执行 795
17.4 本章小结 795
第18章 建立ASP.NET服务器控件 796
18.1 编写简单的控件 796
18.1.1 创建一个C#控件 796
18.1.2 Visual Basic中的控件开发 800
18.1.3 多步页面显示 803
18.1.4 组合控件 816
18.2 编写文本框控件 825
18.2.1 IPostBackDataHandler接口 827
18.2.2 引发事件的控件 829
18.2.3 使用视图状态 836
18.2.4 类型和视图状态 842
18.2.5 关于对象属性和UI模板的更多内容 843
18.2.6 DataBind和OnDataBinding 852
18.3 其他问题 854
18.3.1 访问ASP.NET内部对象 854
18.3.2 编写自适应控件 856
18.3.3 控件属性 857
18.3.4 定制控件构建器 858
18.4 用户控件 858
18.5 本章小结 859
第19章 公布Web服务 860
19.1 Web服务概况 861
19.1.1 常见问题 861
19.1.2 规范 862
19.2 构建ASP.NET Web服务 863
19.3.1 内联 869
19.3.2 后台编码 869
19.3 编写ASP.NET Web服务 869
19.3.3 WebService指令 870
19.3.4 应用程序代码 872
19.4 协议 875
19.4.1 HTTP-GET 875
19.4.2 HTTP-POST 876
19.4.3 SOAP 876
19.5 数据类型 877
19.6 WebMethod和WebService属性 878
19.6.1 WebMethod属性 878
19.6.2 WebService属性 885
19.7 设计ASP.NET Web服务 890
19.7.1 繁琐和简洁 890
19.7.2 无状态与有状态 891
19.7.3 高速缓存与静态 892
19.7.4 异步与同步 893
19.8 高级ASP.NET Web服务 894
19.8.1 控制并整理XML 894
19.8.2 修改Web服务帮助页 897
19.8.3 SOAP头 898
19.9 本章小结 903
第20章 使用Web服务 904
20.1 查找和描述Web服务 904
20.1.1 UDDI 905
20.1.2 Web服务描述语言 907
20.2 构建Web服务代理 910
20.2.1 Fibonacci代理 911
20.2.2 使用Visual Studio.NET 913
20.2.3 使用wsdl.exe 917
20.3 使用代理类 922
20.3.1 控制超时 922
20.3.2 设置URL 923
20.3.3 为访问Web服务器设置代理 924
20.3.4 维护状态 925
20.4 从Web站点到Web服务 928
20.4.1 编写WSDL 928
20.4.2 构建代理 930
20.4.3 使用ScreenScrape代理 931
20.5 设计选择 933
20.5.1 SOAP异常 933
20.5.2 使用SOAP头文件 935
20.6 Web服务的安全性 938
20.6.1 ASP.NET身份验证和授权 938
20.6.2 HTTPS加密和客户证书 943
20.7 高级主题 946
20.7.1 定制的身份验证和授权 947
20.7.2 SOAP Extensions 952
20.8 本章小结 960
第21章 移动控件 961
21.1 无线Web概述 961
21.1.1 WAP 963
21.1.2 WML 964
21.1.3 设备的互操作性 969
21.2 移动控件 970
21.2.1 简单范例 971
21.2.2 查看生成的代码 973
21.2.3 移动控件窗体 976
21.2.4 控件引用 978
21.2.5 〈mobile:Label〉 978
21.2.6 〈mobile:Link〉 979
21.2.7 〈mobile:Image〉 981
21.2.8 〈mobile:Command〉 983
21.2.9 〈mobile:TextBox〉 984
21.2.10 〈mobile:List〉 986
21.2.11 〈mobile:SelectionList〉 990
21.2.12 〈mobile:ObjectList〉 992
21.2.13 〈mobile:PhoneCall〉 998
21.2.14 〈mobile:Calendar〉 999
21.2.17 〈mobile:Panel〉 1002
21.2.16 〈mobile:AdRotator〉 1002
21.2.18 验证控件 1002
21.2.15 〈mobile:TextView〉 1002
21.3 移动控件的高级主题 1004
21.3.1 设置样式 1004
21.3.2 使用设备的功能 1005
21.3.3 模板 1009
21.3.4 分页 1011
21.4.1 移动Internet的未来发展 1013
21.4.2 移动控件的未来发展 1013
21.4 本章小结和未来展望 1013
22.1 跟踪 1015
22.1.1 页面级跟踪 1015
第22章 跟踪、错误处理、调试和性能 1015
22.1.2 写跟踪信息 1017
22.1.3 应用程序级跟踪 1020
22.2 错误处理 1021
22.2.1 结构化的异常处理 1021
22.2.2 ASP.NET错误处理 1027
22.2.3 向管理员通知错误 1029
22.3 调试 1031
22.3.1 SDK调试器 1032
22.3.2 在Visual Studio.NET中调试代码 1034
22.4 测试与性能 1035
22.4.1 实施 1036
22.4.2 抽样 1043
22.4.3 定制抽样 1043
22.4.4 分析 1046
22.5 本章小结 1046
第23章 迁移和互操作性 1047
23.1 迁移、集成还是重写 1047
23.1.2 集成 1048
23.1.3 重写 1048
23.1.4 不做任何改动 1048
23.1.1 迁移 1048
23.2.1 准备工作 1049
23.2.2 内部对象 1049
23.2 ASP.NET 1049
23.2.3 页面的改变 1057
23.3 语言的变化 1058
23.4 互操作性 1061
23.4.1 跨边界 1061
23.4.2 在.NET中使用COM对象 1064
23.4.3 在COM中使用.NET组件 1067
23.4.4 API调用 1074
23.5 本章小结 1080
24.1 应用程序概述 1081
24.2 IBuyAdventure.NET(IBA.NET) 1081
第24章 案例研究——IBuyAdventure.NET 1081
24.2.2 伸缩性——Web解决方案平台 1082
24.2.3 设计企业的伸缩性 1082
24.2.1 目标用户 1082
24.3 业务对象和程序集 1083
24.3.1 ProductsDB业务对象 1083
24.3.2 程序集 1087
24.4.1 Accounts表 1089
24.4.2 Orders表 1089
24.4 IBuyAdventure.NET数据库 1089
24.4.3 Products表 1090
24.4.4 ShoppingCarts表 1090
24.5 应用程序的用户界面 1091
24.6 IBuyAdventure.NET中的用户控件 1092
24.6.1 只有一个服务器端的〈form〉元素 1095
24.6.2 用C#来编写用户控件和代码 1095
24.6.3 特殊用户控件——Specials.ascx 1097
24.6.4 类别用户控件——Categories.ascx 1099
24.6.5 产品详细说明 1104
24.6.6 购物车 1105
24.6.7 显示购物车和改变订单 1109
24.6.8 结账处理与安全性 1114
24.6.9 结账处理 1119
24.7 本章小结 1123
附录A 公用的系统命名空间 1124
B.1 管理视图状态 1128
B.2 管理会话状态 1128
附录B 提高性能的技巧 1128
B.3 使用输出高速缓存 1129
B.4 仅在合适的位置使用服务器控件 1129
B.7 尽可能使用数据绑定 1130
B.6 使用SQLTDS类访问数据 1130
B.8 在Visual Basic中使用Option Explicit或Strict 1130
B.5 使用DataReader,而不是DataSet 1130
B.9 对组件使用早期绑定 1131
B.10 避免ASP兼容性问题 1131
B.11 记住新的请求和响应对象 1132
C.3 System.Data命名空间中的变化 1133
C.2 System命名空间中的变化 1133
C.4 System.IO命名空间中的变化 1133
C.1 新的命名空间 1133
附录C ASP.NET 1.1中的变动 1133
C.5 System.Net命名空间中的变化 1134
C.6 System.Web命名空间中的变化 1134
C.7 Web服务类中的变化 1136
C.8 System.Xml命名空间中的变化 1136
附录D 参考资料及其他信息 1137