第Ⅰ部分 .NET简介 3
第1章 .NET Framework 3
1.1 Web开发的变革 3
1.1.1 HTML和HTML表单 3
1.1.2 服务器端程序设计 6
1.1.3 客户端程序设计 7
1.2 .NET Framework 8
1.2.1 C#、VB和.NET语言 10
1.2.2 通用语言运行时 12
1.2.3 .NET类库 14
1.2.4 Visual Studio 14
1.3 小结 15
第2章 C#语言 16
2.1 .NET语言 16
2.2 C#语言基础 17
2.2.1 区分大小写 17
2.2.2 注释 17
2.2.3 语句结束符 18
2.2.4 代码块 19
2.3 变量和数据类型 19
2.3.1 变量的赋值和初始化 21
2.3.2 字符串和转义字符 22
2.3.3 数组 23
2.3.4 枚举类型 25
2.4 变量操作 26
2.4.1 高级数学运算 27
2.4.2 类型转换 28
2.5 基于对象的操作 30
2.5.1 String类型 31
2.5.2 DateTime和TimeSpan类型 32
2.5.3 数组类型 34
2.6 条件逻辑 36
2.6.1 if语句 36
2.6.2 switch语句 37
2.7 循环语句 38
2.7.1 for循环语句 38
2.7.2 foreach循环语句 40
2.7.3 while循环语句 40
2.8 方法 41
2.8.1 参数 42
2.8.2 方法重载 43
2.8.3 委托 44
2.9 小结 46
第3章 类型、对象和名称空间 47
3.1 类的基础概念 47
3.1.1 静态成员 48
3.1.2 简单的类 49
3.2 创建一个简单的类 49
3.2.1 创建对象 51
3.2.2 在类中添加属性 52
3.2.3 为类添加一个方法 54
3.2.4 添加构造函数 55
3.2.5 添加事件 56
3.2.6 测试Product类 58
3.3 值类型与引用类型 59
3.3.1 赋值操作 60
3.3.2 相等性测试 61
3.3.3 参数传递:传值与传址 61
3.3.4 .NET类型回顾 62
3.4 名称空间和程序集 64
3 4.1 使用名称空间 65
3.4.2 导入名称空间 66
3.4.3 程序集 67
3.5 类的高级程序设计 67
3.5.1 继承 68
3.5.2 静态成员 69
3.5.3 对象的类型转换 70
3.5.4 分部类 72
3.5.5 泛型 74
3.6 小结 75
第Ⅱ部分 开发ASP.NET应用程序 79
第4章 Visual Studio 79
4.1 Visual Studio的承诺 79
4.2 创建Web站点 80
4.2.1 创建一个新的Web应用程序 81
4.2.2 网站和Web项目 83
4.2.3 隐藏的解决方案文件 84
4.2.4 解决方案资源管理器 85
4.2.5 添加Web窗体 86
4.2.6 迁移早期版本Visual Studio创建的网站 87
4.3 设计Web页面 88
4.3.1 添加Web控件 89
4.3.2 属性窗口 91
4.4 Web窗体剖析 93
4.4.1 Web窗体的标记 93
4.4.2 页面指令 94
4.4.3 文档类型 95
4.4.4 XHTML精要 97
4.5 编写代码 103
4.5.1 后置代码类 103
4.5.2 添加事件处理器 103
4.5.3 智能感知和代码大纲 105
4.6 Visual Studio调试 110
4.6.1 Visual Studio内建的Web服务器 110
4.6.2 单步调试 111
4.6.3 变量监视 114
4.7 小结 115
第5章 Web窗体基础 116
5.1 ASP.NET应用程序剖析 116
5.1.1 ASP.NET的文件类型 117
5.1.2 ASP.NET应用程序的目录结构 118
5.2 服务器端控件简介 119
5.2.1 HTML服务器端控件 120
5.2.2 将HTML页面转换为ASP.NET页面 121
5.2.3 视图状态 124
5.2.4 HTML控件类 125
5.2.5 添加货币转换功能的代码 127
5 2 6 事件处理程序 130
5.2.7 货币转换程序的幕后故事 131
5.2.8 错误处理 133
5.3 改进货币转换页面 134
5.3.1 添加多种货币 134
5.3.2 将汇率信息保存在列表项中 136
5.3.3 添加链接的图片 137
5.3.4 设置样式 139
5.4 深度探索HTML服务器端控件类 140
5.4.1 HTML服务器端控件的事件 140
5.4.2 HtmlInputImage控件的高级事件 141
5.4.3 HtmlControl基类 143
5.4.4 HtmlContainerControl类 144
5.4.5 HtmlInputControl类 144
5.5 Page类 145
5.5.1 将用户导航到新页面 146
5.5.2 HTML编码 147
5.6 应用程序事件 149
5.6.1 Global.asax文件 149
5.6.2 其他应用程序事件 151
5.7 ASP.NET的配置 151
5.7.1 web.config文件 152
5.7.2 嵌套的配置 153
5.7.3 在web.config文件中存储用户自定义的设置 154
5.7.4 ASP.NET网站管理工具(WAT) 156
5.8 小结 157
第6章 Web控件 158
6.1 Web控件 158
6.1.1 基本的Web控件类 159
6.1.2 Web控件的标记 160
6.2 Web控件类 162
6.2.1 WebControl基类 162
6.2.2 长度的度量单位 163
6.2.3 枚举 164
6.2.4 颜色属性 165
6.2.5 字体 166
6.2.6 输入焦点 167
6.2.7 缺省按钮 168
6.3 列表控件 169
6.3.1 多选列表控件 170
6.3.2 BulletedList控件 171
6.4 Table控件 173
6.5 Web控件的事件和AutoPostBack 177
6.5.1 回传事件的工作原理 180
6.5.2 页面的生命周期 181
6.6 一个简单的Web页面 184
6.6.1 改进生成电子贺卡的程序 188
6.6.2 自动生成电子贺卡 190
6.7 小结 191
第7章 状态管理 192
7.1 状态管理的问题 192
7.2 视图状态 192
7.2.1 ViewState集合 193
7.2.2 一个使用ViewState集合的例子 193
7.2.3 使视图状态更加安全 194
7.2.4 使用视图状态保存成员变量 196
7.2.5 用视图状态存储用户自定义对象 198
7.3 在页面之间传递信息 199
7.3.1 跨页传递 199
7.3.2 查询字符串 204
7.4 Cookies 208
7.5 会话状态 211
7.5.1 跟踪会话状态 211
7.5.2 使用会话状态 212
7.5.3 一个会话状态的简单示例 213
7.6 会话状态的配置 216
7.6.1 Cookieless 216
7.6.2 Timeout 219
7.6.3 会话的模式 220
7.7 应用程序状态 224
7.8 不同状态存储方式的概括和对比 226
7.9 小结 227
第8章 错误处理、日志和跟踪 228
8.1 常见错误 228
8.2 异常处理机制 230
8.2.1 Exception类 230
8.2.2 异常链 232
8.3 处理异常 233
8.3.1 捕获特定的异常 234
8.3.2 嵌套的异常处理方法 235
8.3.3 异常处理实战 237
8.3.4 异常处理的高级原则 238
8.4 抛出自定义的异常 239
8.5 用日志记录异常 242
8.5.1 查看Windows的事件日志 243
8.5.2 将记录写入事件日志中 245
8.5.3 用户自定义的日志 247
8.5.4 用户自定义的日志类 248
8.5.5 获取日志中记录的信息 250
8.6 出错信息页面 252
8.6.1 出错信息页面的显示模式 254
8.6.2 用户自定义的出错信息页面 255
8.7 页面跟踪 256
8.7.1 启用跟踪 257
8.7.2 跟踪信息 258
8.7.3 写入跟踪信息 262
8.7.4 应用程序级别的跟踪 265
8.8 小结 267
第9章 部署ASP.NET应用程序 268
9.1 ASP.NET应用程序和Web服务器 268
91.1 Web服务器是如何工作的 268
9.1.2 虚拟目录 270
9.1.3 Web应用程序的URL 270
9.1.4 Web农场 272
9.2 Internet信息服务(IIS) 273
9.2.1 IIS的不同版本 273
9.2.2 在Windows XP中安装IIS 5 274
9.2.3 在Windows Server 2003中安装IIS 6 275
9.2.4 在Windows Vista中安装IIS 7 276
9.2.5 在Windows Server 2008中安装IIS 7 277
9.2.6 注册ASP.NET文件映射 278
9.2.7 检验ASP.NET是否已经正确安装 279
9.3 使用IIS管理器管理网站 280
9 3.1 创建虚拟目录 282
9.3.2 配置虚拟目录 284
9.4 部署一个简单的网站 288
9.4.1 Web应用程序和组件 289
9.4.2 其他配置步骤 289
9.4.3 ASP.NET代码的编译 290
9.4.4 ASP.NET的账户 291
9.5 使用Visual Studio部署Web应用程序 295
9.5.1 为新网站创建一个虚拟目录 295
9.5.2 复制网站 297
9.5.3 发布网站 299
9.6 小结 300
第Ⅲ部分 构建更好的Web窗体 303
第10章 验证控件 303
10.1 理解验证控件 303
10.1.1 验证控件 304
10.1.2 服务器端验证 305
10.1.3 客户端验证 305
10.2 验证控件 306
10.2.1 验证控件的一个简单实例 307
10.2.2 显示验证信息的其他方式 309
10.2.3 手工执行验证 312
10.2.4 使用正则表达式进行验证 313
10.2.5 已验证的用户窗体 318
10.2.6 对验证控件进行分组 322
10.3 小结 324
第11章 多功能控件 325
11.1 Calendar控件 325
11.1.1 格式化Calendar控件 327
11.1.2 限定日期 328
11.2 AdRotator 332
11.2.1 Advertisement文件 333
11.2.2 AdRotator类 334
11.3 多视图页面 335
11.3.1 MultiView控件 337
11.3.2 Wizard控件 342
11.4 小结 349
第12章 用户控件和绘制图形 350
12.1 用户控件 350
12.1.1 创建一个简单用户控件 351
12.1.2 独立用户控件 354
12.1.3 集成用户控件 356
12.1.4 用户控件的事件 358
12.1.5 通过事件传递信息 361
12.2 动态绘制图形 364
12.2.1 绘图基础 364
12.2.2 绘制一个自定义的图形 366
12.2.3 将自定义图形输出到Web页面上 368
12.2.4 图形的格式和质量 369
12.3 小结 372
第13章 样式、主题和母版页 373
13.1 样式 373
13.1.1 样式的类型 374
13.1.2 创建一个基本的内嵌样式 374
13.1.3 创建一个样式表 381
13.1.4 应用样式表规则 384
13.2 主题 386
13.2.1 Theme的工作原理 387
13.2.2 应用一个简单的主题 388
13.2.3 处理主题冲突 390
13.2.4 为同一控件创建多个皮肤 391
13.2.5 高级皮肤 392
13.3 母版页基础 394
13.3.1 一个简单的母版页和内容页 395
13.3.2 母版页和内容页是如何连接的 398
13.3.3 具有多个内容区域的母版页 400
13.3.4 缺省内容 402
13.3.5 母版页和相对路径 404
13.4 高级母版页 405
13.4.1 基于表格的页面布局 405
13.4.2 为母版页编写代码 408
13.4.3 以编程方式与母版页进行交互 408
13.5 小结 410
第14章 网站导航 411
14.1 网站地图 411
14.1.1 定义一个网站地图 412
14.1.2 实战:一个简单的网站地图 416
14.1.3 在一个普通的Web页面中绑定网站地图 417
14.1.4 将网站地图绑定到母版页之中 418
14.1.5 绑定网站地图中的一部分 420
14.1.6 SiteMap类 425
14.1.7 URL映射 427
14.2 SiteMapPath导航控件 428
14.2.1 定制SiteMapPath控件 429
14.2.2 使用SiteMapPath样式和模板 430
14.2.3 添加自定义的网站地图信息 432
14.3 TreeView控件 433
14.3.1 TreeView控件的属性 433
14.3.2 TreeView的样式 436
14.4 菜单控件 439
14.4.1 Menu控件的样式 440
14.4.2 Menu控件的模板 442
14.5 小结 444
第Ⅳ部分 使用数据 447
第15章 ADO.NET基础 447
15.1 理解数据管理 447
15.1.1 数据库的角色 447
15.1.2 Web世界中的数据访问 449
15.2 配置数据库 450
15.2.1 SQL ServerExpress 450
15.2.2 Visual Studio中浏览和修改数据库 451
15.2.3 Sqlcmd命令行工具 453
15.3 SQL基础 454
15.3.1 在Visual Studio中运行查询 455
15.3.2 Select语句 456
15.3.3 SQL的Update语句 459
15.3.4 SQL的Insert语句 460
15.3.5 SQL的Delete语句 461
15.4 ADO.NET基础 462
15.4.1 数据访问类的名称空间 464
15.4.2 数据提供程序类 464
15.5 直接数据访问 466
15.5.1 创建一个数据连接 467
15.5.2 Select命令 474
l5.5.3 数据读取器 475
l5.5.4 数据读取器实例 476
15.5.5 更新数据 480
15.6 断开式数据访问 490
15.6.1 获取断开式数据 491
15.6.2 选择多个表 493
15.6.3 定义关系 495
15.7 小结 497
第16章 数据绑定 498
16.1 数据绑定简介 498
16.1.1 ASP.NET数据绑定的类型 499
16.1.2 数据绑定的工作原理 499
16.2 单值数据绑定 500
16.2.1 单值数据绑定的一个简单例子 500
16.2.2 使用属性进行简单数据绑定 503
16.2.3 单值数据绑定的问题 504
16.2.4 使用代码来代替简单数据绑定 505
16.3 多值数据绑定 505
16.3.1 简单列表控件的数据绑定 506
16.3.2 列表控件数据绑定的简单实例 507
16.3.3 强类型的集合 508
16.3.4 多个控件绑定到同一数据源 509
16.3.5 在数据绑定中使用字典集合 510
16.3.6 使用DataValueField属性 512
16.3.7 使用ADO.NET进行数据绑定 513
16.3.8 创建一个记录编辑器 515
16.4 数据源控件 520
16.4.1 数据绑定页面的生命周期 521
16.4.2 SqlDataSource数据源控件 522
16.4.3 选择记录 523
16.4.4 参数化数据命令 526
16.4.5 错误处理 531
16.4.6 更新记录 532
16.5 小结 536
第17章 数据控件 537
17.1 GridView控件 537
17.1.1 自动生成列 538
17.1.2 定义列 539
17.2 格式化GridView控件 543
17.2.1 格式化字段 544
17.2.2 使用样式 545
17.2.3 格式化特定的值 547
17.3 在Gridview中选择一行 549
17.3.1 添加一个Select按钮 549
17.3.2 使用选择记录来创建主-从页面 551
17.4 在GridView中编辑记录 553
17.5 GridView控件的排序和分页 555
17.5.1 排序 556
17.5.2 分页 558
17.6 使用GridView模板 560
17.6.1 使用多种模板 562
17.6.2 在Visual Studio中编辑模板列 563
17.6.3 处理模板事件 563
17.6.4 使用模板进行编辑 564
17.7 DetailsView控件和FormView控件 568
17.7.1 DetailsView控件 569
17.7.2 FormView控件 571
17.8 小结 573
第18章 文件和流 574
18.1 文件和Web应用程序 574
18.2 文件系统的信息 575
18.2.1 Path类 576
18.2.2 Directory类和File类 577
18.2.3 DirectoryInfo类和FileInfo类 582
18.2.4 DriveInfo类 583
18.2.5 一个简单的文件浏览器 584
18.3 使用流读写文件 588
18.3.1 文本文件 588
18.3.2 二进制文件 590
18.3.3 读写文件的快捷方式 591
18.3.4 一个简单的留言簿 592
18.4 上传文件 597
18.5 小结 600
第19章 XML 601
19.1 隐藏在.NET中的重要角色——XML 601
19.1.1 配置文件 601
19.1.2 XHTML 601
19.1.3 ADO.NET数据访问 602
19.1.4 存储杂项数据 602
19.2 XML简介 602
19.2.1 使用XML改进产品列表 604
19.2.2 XML基础 605
19.2.3 属性 606
19.2.4 注释 607
19.3 XML类 608
19.3.1 XmlTextWriter类 608
19.3.2 XmlTextReader类 611
19.3.3 访问内存中的XML文档 615
19.3.4 读取XML文档 619
19.3.5 搜索XML文档 621
19.4 XML验证 622
19.4.1 XML名称空间 623
19.4.2 XML架构定义 625
19.4.3 验证XML文档 627
19.5 XML的显示和转换 629
19.6 XML数据绑定 633
19.6.1 非层次化的数据绑定 634
19.6.2 使用TreeView控件进行层次化的数据绑定 636
19.6.3 从其他数据源绑定XML内容 637
19.7 小结 638
第Ⅴ部分 网站安全 641
第20章 安全基础 641
20.1 确定安全需求 641
20.2 ASP.NET安全模型 642
20.2.1 Visual Studio内建的Web服务器 645
20.2.2 认证和授权 645
20.3 表单认证 646
20.3.1 Web.config文件设置 647
20.3.2 授权规则 648
20.3.3 网站管理工具WAT 651
20.3.4 登录页面 653
20.4 Windows认证 657
20.4.1 Web.config中的设置 658
20.4.2 设置IIS 660
20.4.3 Windows认证的一个简单测试 663
20.5 身份模拟 664
20.5.1 理解身份模拟 665
20.5.2 以编程方式进行身份模拟 665
20.6 使用SSL进行机密通信 666
20.6.1 创建一个证书请求 666
20.6.2 安全套接字层 668
20.7 小结 669
第21章 成员关系 670
21.1 成员关系的数据存储 670
21.1.1 SQL Server 2005 Express中的成员关系 672
21.1.2 使用全功能版本的SQL Server 674
21.1.3 配置Membership Provider 676
21.1.4 使用WAT创建用户 680
21.1.5 Membership和MembershipUser 682
21.1.6 使用Membership类进行认证 685
21.1.7 禁用用户的账户 686
21.2 安全控件 686
21.2.1 Login控件 687
21.2.2 CreateUserWizard控件 692
21.2.3 PasswordRecovery控件 696
21.3 基于角色的安全 698
21.3.1 创建和分配角色 699
21.3.2 基于角色的访问限制 701
21.3.3 LoginView控件 702
21.4 小结 704
第22章 用户配置文件 705
22.1 理解用户配置文件 705
22.1.1 用户配置文件的性能 706
22.1.2 用户配置文件的数据是如何存储的 707
22.2 使用SqlProfileProvider 708
22.2.1 启用认证 709
22.2.2 使用完整版本的SQL Server 710
22.2.3 用户配置文件数据库 711
22.2.4 定义用户配置文件的字段 712
22.2.5 使用用户配置文件字段 714
22.2.6 用户配置文件的序列化 715
22.2.7 用户配置文件组 717
22.2.8 用户配置文件和自定义的数据类型 718
22.2.9 用户配置文件API 721
22.2.10 匿名用户配置文件 724
22.3 小结 726
第Ⅵ部分 高级ASP.NET 729
第23章 基于组件的程序设计 729
23.1 为什么要使用组件 729
23.2 组件的相关概念 730
23.2.1 三层设计 730
23.2.2 封装 732
23.2.3 业务对象 732
23.2.4 数据对象 732
23.2.5 组件和类 732
23.3 创建组件 733
23.3.1 类和名称空间 734
23.3.2 类成员 736
23.3.3 添加一个对组件的引用 736
23.3.4 使用组件 739
23.4 属性和状态 740
23.4.1 一个有状态的Account类 741
23.4.2 一个无状态的AccountUtility类 742
23.5 数据访问组件 743
23.5.1 一个简单的数据访问组件 744
23.5.2 使用数据访问组件 747
23.5.3 使用错误处理机制增强组件 750
23.5.4 使用聚合信息以增强组件的功能 751
23.6 ObjectDataSource数据源控件 752
23.6.1 使ObjectDataSource能够理解所使用的数据访问类 753
23.6.2 选取记录 753
23.6.3 使用方法参数 754
23.6.4 更新记录 755
23.7 小结 758
第24章 缓存 759
24.1 理解缓存 759
24.1.1 何时使用缓存 760
24.1.2 ASP.NET中的缓存 761
24.2 输出缓存 761
24.2.1 客户端的缓存 763
24.2.2 缓存和查询字符串 763
24.2.3 缓存特定的查询字符串参数 764
24.2.4 多个缓存副本的一个示例 765
24.2.5 用户自定义缓存控制 766
24.2.6 部分页缓存 768
24.2.7 缓存配置文件 768
24.3 数据缓存 769
24.3.1 将要缓存的对象添加到Cache中 770
24.3.2 一个简单的Cache测试 771
24.3.3 使用Cache为同一数据提供多个视图 772
24.3.4 使用数据源控件的缓存 776
24.4 缓存依赖 780
24.4.1 文件缓存依赖 780
24.4.2 缓存项目依赖 781
24.4.3 SQL Server 2000的缓存依赖 781
24.4.4 SQL Server 2005和2008中的缓存依赖 786
24.5 小结 789
第25章 ASP.NET AJAX 790
25.1 理解Ajax 790
25.1.1 Ajax的优点 791
25.1.2 Ajax的缺点 791
25.1.3 ASP.NET AJAX工具包 792
25.1.4 ScriptManager 793
25.2 局部刷新 794
25.2.1 一个简单的UpdatePanel示例 796
25.2.2 错误处理 798
25.2.3 条件更新 800
25.2.4 触发器 801
25.3 进度通知 805
25.3.1 显示一个模拟的进度条 806
25.3.2 取消 808
25.4 定时更新 810
25.5 ASP.NET AJAX控件工具箱 811
25.5.1 安装ASP.NET AJAX控件工具箱 812
25.5.2 Accordion组件 814
25.5.3 AutoCompleteExtender 817
25.5.4 更多的控件扩展器 820
25.6 小结 822