书籍详情
ASP.NET高级程序设计
作者:(美)麦克唐纳,(美)兹普兹塔 著,博思工作室 译
出版社:人民邮电出版社
出版时间:2009-11-01
ISBN:9787115216441
定价:¥148.00
购买这本书可以去
内容简介
《ASP.NET高级程序设计(第3版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。《ASP.NET高级程序设计(第3版)》还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET高级程序设计(第3版)》专门提供了两章的内容来教你如何用Ajax技术制作快速响应的页面,以及如何使用微软的ASP.NET AJAX平台。另外,还介绍了微软的新一代RIA技术Silverlight。《ASP.NET高级程序设计(第3版)》适用于各层次的ASP.NET开发人员。
作者简介
Matthew MacDonald 世界顶尖的微软技术专家,微软MVP。他是Inside Visual Basic、ASP Today、Hardcore Visual Studio .NET等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书,本书为其代表作。Mario Szpuszta微软奥地利开发者和平台组架构师,有丰富的Web应用和安全软件开发和集成经验。他也是社区内非常活跃的技术专家,经常在各种顶级技术会议中发表演讲。除本书外,他还是名著Advanced .NET Remoting的作者。
目录
第一部分 核心概念
第1章 ASP.NET简介 2
1.1 Web开发技术的演进 2
1.1.1 早期的Web开发 2
1.1.2 .NET革命 3
1.2 ASP.NET的7大要点 3
1.2.1 要点1:ASP.NET是同.NET Framework集成在一起的 3
1.2.2 要点2:ASP.NET是编译执行的,而不是解释执行的 4
1.2.3 要点3:ASP.NET支持多语言 6
1.2.4 要点4:ASP.NET运行在公共语言运行库内 7
1.2.5 要点5:ASP.NET是面向对象的 8
1.2.6 要点6:ASP.NET是跨设备和跨浏览器的 10
1.2.7 要点7:ASP.NET易于部署和配置 10
1.3 ASP.NET:故事在继续 11
1.3.1 ASP.NET 2.0 11
1.3.2 ASP.NET 3.5 12
1.3.3 .NET 3.5 Service Pack 1 16
1.3.4 ASP.NET 4.0预览 16
1.3.5 Silverlight 17
1.4 总结 17
第2章 Visual Studio 18
2.1 .NET开发模型 19
2.1.1 编译器 19
2.1.2 Visual Studio集成开发环境 19
2.1.3 网站和Web项目 20
2.1.4 创建无项目文件的网站 20
2.1.5 多目标 23
2.1.6 设计网页 24
2.2 Visual Studio集成开发环境 29
2.2.1 解决方案资源管理器 30
2.2.2 文档窗口 31
2.2.3 工具箱 32
2.2.4 错误列表和任务列表 32
2.2.5 服务器资源管理器 34
2.3 代码编辑器 35
2.3.1 添加程序集引用 35
2.3.2 智能感知和大纲显示 37
2.4 编码模型 39
2.4.1 代码隐藏文件如何与页面连接 41
2.4.2 控件标签如何与页面变量连接 42
2.4.3 事件如何与事件处理程序连接 43
2.5 Web项目 44
2.5.1 创建Web项目 46
2.5.2 迁移旧版Visual Studio创建的网站 47
2.6 Visual Studio调试 48
2.6.1 单步调试 49
2.6.2 变量监视 51
2.6.3 高级断点 51
2.7 Visual Studio宏 52
2.8 Web Development Helper 54
2.9 总结 55
第3章 Web窗体 56
3.1 页面处理 56
3.1.1 HTML表单 56
3.1.2 动态用户界面 58
3.1.3 ASP.NET事件模型 59
3.1.4 自动回送 59
3.1.5 视图状态 61
3.1.6 XHTML兼容性 64
3.2 Web窗体处理阶段 68
3.2.1 页面框架初始化 69
3.2.2 用户代码初始化 69
3.2.3 验证 69
3.2.4 事件处理 70
3.2.5 自动数据绑定 70
3.2.6 清除 71
3.2.7 页面流示例 71
3.3 作为控件容器的页面 73
3.3.1 显示控件树 73
3.3.2 页头 77
3.3.3 动态控件的创建 77
3.4 Page类 79
3.4.1 Session、Application和Cache 79
3.4.2 Request 80
3.4.3 Response 81
3.4.4 Server 82
3.4.5 User 85
3.4.6 Trace 85
3.4.7 访问其他类中的HTTP上下文 89
3.5 总结 90
第4章 服务器控件 91
4.1 服务器控件的类型 91
4.2 HTML服务器控件 93
4.2.1 HtmlControl类 93
4.2.2 HtmlContainerControl类 94
4.2.3 HtmlInputControl类 94
4.2.4 HTML服务器控件类 95
4.2.5 设置Style特性和其他属性 96
4.2.6 编程创建服务器控件 97
4.2.7 处理服务器端事件 98
4.3 Web控件 100
4.3.1 WebControl基类 101
4.3.2 基本的Web控件类 102
4.3.3 单位 103
4.3.4 枚举 104
4.3.5 颜色 104
4.3.6 字体 105
4.3.7 焦点 106
4.3.8 默认按钮 107
4.3.9 可滚动面板 108
4.3.10 处理Web控件事件 108
4.4 List控件 111
4.4.1 Selectable列表控件 112
4.4.2 BulletedList控件 113
4.5 输入验证控件 115
4.5.1 验证控件 115
4.5.2 验证流程 116
4.5.3 BaseValidator类 118
4.5.4 RequiredFieldValidator控件 118
4.5.5 RangeValidator控件 119
4.5.6 CompareValidator控件 119
4.5.7 RegularExpressionValidator控件 120
4.5.8 CustomValidator控件 122
4.5.9 ValidationSummary控件 123
4.5.10 通过编程使用验证器 123
4.5.11 验证组 125
4.6 富控件 126
4.6.1 AdRotator控件 127
4.6.2 Calendar控件 128
4.7 总结 130
第5章 ASP.NET应用程序 131
5.1 剖析ASP.NET应用程序 131
5.1.1 应用程序域 131
5.1.2 应用程序生命周期 132
5.1.3 应用程序更新 133
5.1.4 应用程序目录结构 134
5.2 global.asax应用程序文件 134
5.2.1 应用程序事件 136
5.2.2 演示应用程序事件 137
5.3 ASP.NET配置 138
5.3.1 machine.config文件 139
5.3.2 web.config文件 141
5.3.3 设置 144
5.3.4 通过编程读写配置节 148
5.3.5 网站管理工具(WAT) 150
5.3.6 扩展配置文件结构 150
5.3.7 加密配置节 155
5.4 .NET组件 156
5.4.1 创建组件 157
5.4.2 通过App_Code目录使用组件 158
5.4.3 通过Bin目录使用组件 159
5.5 扩展HTTP管道 161
5.5.1 HTTP处理程序和HTTP模块 161
5.5.2 创建自定义的HTTP处理程序 163
5.5.3 配置自定义的HTTP处理程序 164
5.5.4 在不配置IIS的情况注册HTTP处理程序 165
5.5.5 创建高级的HTTP处理程序 166
5.5.6 为非HTML内容创建HTTP处理程序 167
5.5.7 创建自定义HTTP模块 170
5.6 总结 173
第6章 状态管理 174
6.1 ASP.NET状态管理 174
6.2 视图状态 176
6.2.1 视图状态示例 176
6.2.2 在视图状态中保存对象 178
6.2.3 保持成员变量 179
6.2.4 视图状态评估 180
6.2.5 视图状态安全 182
6.3 在页面间传送信息 183
6.3.1 查询字符串 183
6.3.2 跨页回发 185
6.4 cookie 190
6.5 会话状态 191
6.5.1 会话架构 191
6.5.2 使用会话状态 193
6.5.3 配置会话状态 194
6.5.4 会话状态安全 198
6.6 应用程序状态 199
6.7 总结 202
第二部分 数据访问
第7章 ADO.NET基础 204
7.1 ADO.NET架构 205
7.1.1 ADO.NET数据提供程序 205
7.1.2 ADO.NET的标准化 207
7.1.3 基本ADO.NET类 207
7.2 Connection类 208
7.2.1 连接字符串 208
7.2.2 测试连接 209
7.2.3 连接池 211
7.2.4 连接统计 212
7.3 Command类和DataReader类 213
7.3.1 Command基础 213
7.3.2 DataReader类 214
7.3.3 ExecuteReader()方法和DataReader 215
7.3.4 ExecuteScalar()方法 219
7.3.5 ExecuteNonQuery()方法 219
7.3.6 SQL注入攻击 220
7.3.7 使用参数化命令 222
7.3.8 调用存储过程 223
7.4 事务 226
7.4.1 事务和ASP.NET应用程序 226
7.4.2 隔离级别 230
7.4.3 保存点 231
7.5 提供程序无关的代码 232
7.5.1 创建工厂 232
7.5.2 用工厂创建对象 233
7.5.3 使用提供程序无关的代码的查询 234
7.6 总结 235
第8章 数据组件和DataSet 236
8.1 构建数据访问组件 236
8.1.1 数据包 237
8.1.2 存储过程 238
8.1.3 数据应用类 239
8.1.4 测试数据库组件 245
8.2 非连接的数据 247
8.2.1 Web应用程序和DataSet 247
8.2.2 XML集成 248
8.3 DataSet类 248
8.4 DataAdapter类 249
8.4.1 填充DataSet 251
8.4.2 使用多个表和关系 252
8.4.3 查找特定行 254
8.4.4 在数据访问类里使用DataSet 255
8.4.5 数据绑定 256
8.5 DataView类 257
8.5.1 使用DataView排序 257
8.5.2 使用DataView过滤 258
8.5.3 使用关系的高级过滤 260
8.5.4 计算列 261
8.6 强类型DataSet 262
8.6.1 自定义TableAdapter 263
8.6.2 创建强类型DataSet 264
8.6.3 深入强类型DataSet 265
8.6.4 使用强类型DataSet 268
8.7 总结 269
第9章 数据绑定 270
9.1 基本的数据绑定 270
9.1.1 单值绑定 271
9.1.2 其他类型的表达式 272
9.1.3 重复值绑定 276
9.2 数据源控件 282
9.3 SqlDataSource 284
9.3.1 选择记录 285
9.3.2 参数化命令 287
9.3.3 错误处理 290
9.3.4 更新记录 291
9.3.5 删除记录 294
9.3.6 插入记录 295
9.3.7 SqlDataSource的不足 296
9.4 ObjectDataSource 296
9.4.1 选择记录 297
9.4.2 更新记录 301
9.4.3 使用数据对象执行更新 302
9.5 数据源控件的限制 305
9.5.1 问题 305
9.5.2 添加其他项 306
9.5.3 使用SqlDataSource处理其他选项 307
9.5.4 使用ObjectDataSource处理其他选项 307
9.6 总结 308
第10章 富数据控件 309
10.1 GridView 310
10.2 格式化GridView 313
10.2.1 格式化字段 313
10.2.2 样式 315
10.2.3 格式化特定值 318
10.3 GridView行选择 319
10.3.1 使用选择来创建主-从表单 320
10.3.2 SelectedIndexChanged事件 321
10.3.3 将数据字段用作选择按钮 322
10.4 对GridView排序 323
10.4.1 使用SqlDataSource排序 323
10.4.2 使用ObjectDataSource排序 324
10.4.3 排序和选择 325
10.4.4 高级排序 326
10.5 GridView分页 327
10.5.1 自动分页 328
10.5.2 ObjectDataSource的自定义分页 329
10.5.3 自定义分页栏 331
10.6 GridView模板 332
10.6.1 使用多个模板 334
10.6.2 在Visual Studio中编辑模板 335
10.6.3 绑定到方法 336
10.6.4 处理模板中的事件 337
10.6.5 使用模板编辑 338
10.7 ListView 343
10.7.1 分组 345
10.7.2 分页 346
10.8 DetailsView和FormView 347
10.8.1 DetailsView 348
10.8.2 FormView 350
10.9 高级网格 352
10.9.1 GridView中的汇总 352
10.9.2 单个表中的父/子视图 353
10.9.3 使用查找表编辑字段 355
10.9.4 处理来自数据库的图片 357
10.9.5 探测并发冲突 362
10.10 总结 366
第11章 缓存和异步页面 367
11.1 理解ASP.NET缓存 367
11.2 输出缓存 368
11.2.1 声明性的输出缓存 368
11.2.2 缓存和查询字符串 369
11.2.3 使用特定查询字符串参数的缓存 370
11.2.4 自定义缓存控制 370
11.2.5 使用HttpCachePolicy类进行缓存 372
11.2.6 缓存后替换和部分页缓存 372
11.2.7 缓存用户配置 374
11.2.8 缓存配置 375
11.3 数据缓存 376
11.3.1 向缓存添加项目 377
11.3.2 简单的缓存测试 378
11.3.3 缓存优先级 379
11.3.4 使用数据源控件的缓存 380
11.4 缓存依赖 383
11.4.1 文件和缓存项目依赖 383
11.4.2 聚合依赖 384
11.4.3 移除项目回调 384
11.4.4 理解SQL缓存通知 386
11.4.5 SQL Server 2000中的缓存通知 387
11.4.6 SQL Server 2005和SQL Server 2008中的缓存通知 391
11.5 自定义缓存依赖 393
11.5.1 基本的自定义缓存依赖 393
11.5.2 使用消息队列的自定义缓存依赖 394
11.6 异步页面 397
11.6.1 创建异步页面 397
11.6.2 在异步页面中查询数据 399
11.6.3 错误处理 400
11.6.4 在异步任务中使用缓存 403
11.6.5 多异步任务和超时 405
11.7 总结 406
第12章 文件和流 407
12.1 使用文件系统 407
12.1.1 Directory类和File类 407
12.1.2 DirectoryInfo类和FileInfo类 409
12.1.3 DriveInfo类 412
12.1.4 使用Attributes 412
12.1.5 使用通配符过滤文件 414
12.1.6 获取文件的版本信息 414
12.1.7 Path类 415
12.1.8 文件浏览器 417
12.2 使用流读写文件 421
12.2.1 文本文件 422
12.2.2 二进制文件 424
12.2.3 上传文件 424
12.2.4 使文件对多用户安全 426
12.2.5 压缩 430
12.3 序列化 431
12.4 总结 434
第13章 LINQ 435
13.1 LINQ基础 435
13.1.1 延迟执行 437
13.1.2 LINQ是如何工作的 437
13.1.3 LINQ表达式 438
13.1.4 揭秘LINQ表达式 444
13.2 LINQ to DataSet 447
13.2.1 强类型的DataSet 448
13.2.2 空值 449
13.3 LINQ to SQL 449
13.3.1 数据实体类 451
13.3.2 DataContext 452
13.3.3 揭秘LINQ to SQL查询 453
13.3.4 LINQ to SQL和数据库组件 455
13.3.5 选取单个记录或值 458
13.3.6 自动生成数据类 459
13.3.7 关系 464
13.3.8 为存储过程生成方法 471
13.3.9 提交变更 472
13.4 LinqDataSource 477
13.4.1 显示数据 478
13.4.2 获取关联数据 480
13.4.3 编辑数据 481
13.4.4 验证 482
13.5 总结 484
第14章 XML 485
14.1 什么时候使用XML 485
14.2 XML简介 486
14.2.1 XML的优点 487
14.2.2 格式良好的XML 487
14.2.3 XML命名空间 488
14.2.4 XML架构 489
14.3 基于流的XML处理 491
14.3.1 写XML文件 491
14.3.2 读取XML文件 494
14.4 内存中的XML处理 496
14.4.1 XmlDocument 497
14.4.2 XPathNavigator 500
14.4.3 XDocument 502
14.5 搜索XML内容 506
14.5.1 搜索XmlDocument 507
14.5.2 使用XPath搜索XmlDocument 509
14.5.3 使用LINQ搜索XDocument 510
14.6 验证XML内容 512
14.6.1 基本架构 512
14.6.2 验证XmlDocument 513
14.6.3 使用XDocument进行验证 514
14.7 转换XML内容 515
14.7.1 基本的样式表 515
14.7.2 使用XslCompiledTransform 516
14.7.3 使用Xml控件 518
14.7.4 使用LINQ to XML转换XML 518
14.8 XML数据绑定 520
14.8.1 非层次化绑定 520
14.8.2 使用XPath 522
14.8.3 嵌套的网格 524
14.8.4 使用TreeView的层次化绑定 525
14.8.5 使用XSLT 527
14.8.6 绑定到来自其他源的XML内容 528
14.8.7 通过XmlDataSource更新XML 529
14.9 XML和ADO.NET数据集 529
14.9.1 把DataSet转换为XML 530
14.9.2 把DataSet作为XML访问 531
14.10 总结 533
第三部分 构建ASP.NET网站
第15章 用户控件 536
15.1 用户控件基础 536
15.1.1 创建简单的用户控件 537
15.1.2 把页面转换成用户控件 538
15.2 为用户控件添加代码 539
15.2.1 处理事件 539
15.2.2 添加属性 540
15.2.3 使用自定义对象 541
15.2.4 添加事件 544
15.2.5 公开内部Web控件 547
15.3 动态加载用户控件 547
15.4 局部页面缓存 550
15.4.1 VaryByControl 551
15.4.2 共享缓存控件 552
15.5 总结 553
第16章 主题和母版页 554
16.1 层叠样式表 554
16.1.1 创建样式表 554
16.1.2 应用样式表规则 556
16.2 主题 558
16.2.1 主题文件夹和外观 559
16.2.2 应用简单主题 560
16.2.3 处理主题冲突 561
16.2.4 为同一控件创建多个外观 562
16.2.5 含有模板和图片的外观 562
16.2.6 在主题里使用CSS 564
16.2.7 通过配置文件来应用主题 564
16.2.8 动态应用主题 565
16.3 标准化网站布局 566
16.4 母版页基础 567
16.4.1 简单的母版页 567
16.4.2 简单的内容页 569
16.4.3 默认内容 571
16.4.4 具有表格和CSS布局的母版页 571
16.4.5 母版页和相对路径 574
16.4.6 通过配置文件应用母版页 574
16.5 高级母版页 575
16.5.1 和母版页类交互 575
16.5.2 动态设置母版页 576
16.5.3 嵌套母版页 577
16.6 总结 578
第17章 网站导航 579
17.1 多视图页面 579
17.1.1 MultiView控件 580
17.1.2 Wizard控件 583
17.2 站点地图 590
17.2.1 定义站点地图 590
17.2.2 绑定站点地图 592
17.2.3 导航路径 592
17.2.4 显示站点地图的一部分 594
17.2.5 站点地图对象 597
17.2.6 加入自定义站点地图信息 598
17.2.7 创建自定义的SiteMapProvider 599
17.2.8 URL映射 605
17.2.9 安全调整 606
17.3 TreeView控件 607
17.3.1 TreeNode 608
17.3.2 按需填充结点 610
17.3.3 TreeView样式 612
17.4 Menu控件 615
17.4.1 Menu样式 617
17.4.2 Menu模板 618
17.5 总结 620
第18章 网站部署 621
18.1 IIS 621
18.1.1 IIS站点和虚拟目录 622
18.1.2 IIS管理控制台和IIS配置 623
18.1.3 将网址、虚拟目录和文件映射到URL 624
18.1.4 深入IIS架构 625
18.1.5 安装IIS 638
18.2 管理网站 642
18.2.1 管理虚拟目录以及使用IIS 5.x和IIS 6.0的网站 643
18.2.2 管理IIS 6.0中的应用程序池 647
18.2.3 在IIS 7.0里管理虚拟目录和站点 652
18.2.4 在IIS 7.0里管理应用程序池 662
18.3 部署ASP.NET应用程序 664
18.3.1 在IIS 5.x和IIS 6.0上验证ASP.NET安装 665
18.3.2 在IIS 5.x和IIS 6.0上ASP.NET并行执行 666
18.3.3 IIS 7.0里的ASP.NET并行执行 667
18.3.4 在IIS 5.x上部署时配置HTTP运行时设置 668
18.3.5 在ASP.NET中编译模型 669
18.3.6 使用Visual Studio进行部署 672
18.3.7 Visual Studio 2005 Web部署项目 673
18.4 ASP.NET中的VirtualPathProvider 677
18.5 ASP.NET里的健康监视 681
18.5.1 理解基本结构 682
18.5.2 事件和提供程序 682
18.6 总结 685
第四部分 安全
第19章 ASP.NET安全模型 688
19.1 何为创建安全软件 688
19.1.1 理解潜在的威胁 688
19.1.2 安全编程原则 689
19.1.3 理解Gatekeeper 690
19.2 理解安全级别 691
19.2.1 验证 691
19.2.2 授权 692
19.2.3 机密性和完整性 693
19.2.4 互相协作 694
19.3 IIS安全 695
19.3.1 IIS 5.x和IIS 6.0中的验证和授权 696
19.3.2 IIS 7.0的安全配置 698
19.3.3 理解SSL 702
19.4 ASP.NET安全架构 709
19.4.1 验证 710
19.4.2 授权 711
19.4.3 安全上下文 712
19.4.4 成员资格API和角色API 713
19.5 总结 714
第20章 表单验证 715
20.1 表单验证介绍 715
20.1.1 为什么使用表单验证 716
20.1.2 为什么不使用表单验证 717
20.1.3 为什么不自己实现cookie验证 719
20.1.4 表单验证类 719
20.2 实现表单验证 720
20.2.1 配置表单验证 720
20.2.2 禁止匿名用户访问 722
20.2.3 创建自定义登录页面 723
20.2.4 自定义凭证存储 728
20.2.5 表单验证中的持久化cookie 729
20.3 IIS 7.0和表单验证 730
20.4 总结 735
第21章 成员资格 736
21.1 介绍ASP.NET的成员资格API 736
21.2 使用成员资格API 738
21.2.1 配置表单验证 740
21.2.2 创建数据存储 740
21.2.3 配置连接字符串和成员资格提供程序 745
21.2.4 创建并验证用户 748
21.3 使用安全控件 749
21.3.1 Login控件 750
21.3.2 LoginStatus控件 759
21.3.3 LoginView控件 760
21.3.4 PasswordRecovery控件 761
21.3.5 ChangePassword控件 764
21.3.6 CreateUserWizard控件 765
21.4 在IIS 7.0里配置成员资格 769
21.4.1 配置提供程序和用户 769
21.4.2 在其他应用程序里使用成员资格API 770
21.5 使用Membership类 772
21.5.1 从存储中获得用户 773
21.5.2 更新存储中的用户 775
21.5.3 创建和删除用户 776
21.5.4 检验用户 777
21.5.5 在Windows窗体中使用成员资格 777
21.6 总结 779
第22章 Windows验证 780
22.1 介绍Windows验证 780
22.1.1 为什么使用Windows验证 780
22.1.2 为什么不使用Windows验证 782
22.1.3 Windows验证机制 782
22.2 实现Windows验证 787
22.2.1 配置IIS 5.x和IIS 6.0 787
22.2.2 配置IIS 7.0 789
22.2.3 配置ASP.NET 790
22.2.4 禁止匿名用户访问 793
22.2.5 访问Windows用户信息 794
22.3 身份模拟 799
22.3.1 在Windows 2000中执行身份模拟 799
22.3.2 在Windows XP上面执行身份模拟 800
22.3.3 在Windows Server 2003上执行身份模拟和委托 801
22.3.4 在Windows Vista上执行身份模拟 802
22.3.5 在Windows Server 2008上执行身份模拟和委托 803
22.3.6 经过配置的身份模拟 803
22.3.7 可编程的身份模拟 806
22.4 总结 808
第23章 授权和角色 809
23.1 URL授权 809
23.2 文件授权 815
23.3 在代码中检查授权 815
23.3.1 使用IsInRole()方法 815
23.3.2 使用PrincipalPermission类 816
23.4 为基于角色的授权使用角色API 818
23.4.1 和角色一起使用LoginView控件 823
23.4.2 通过程序访问角色 824
23.4.3 在Windows验证中使用角色API 826
23.5 在IIS 5.x和IIS 6.0中保护非ASP.NET资源 828
23.5.1 添加文件类型的映射 829
23.5.2 编写自定义的HTTP处理程序 830
23.6 IIS 7.0里的授权和角色 831
23.6.1 在IIS 7.0里使用ASP.NET角色授权 833
23.6.2 在IIS 7.0中管理ASP.NET角色 835
23.7 总结 837
第24章 用户配置 838
24.1 理解用户配置 838
24.1.1 用户配置的性能 838
24.1.2 用户配置如何存储数据 839
24.1.3 用户配置和验证 840
24.1.4 用户配置与自定义的数据组件 840
24.2 使用SqlProfileProvider 841
24.2.1 创建用户配置表 841
24.2.2 配置提供程序 843
24.2.3 定义用户配置属性 844
24.2.4 使用用户配置属性 845
24.2.5 用户配置序列化 846
24.2.6 用户配置组 848
24.2.7 用户配置和自定义的数据类型 848
24.2.8 用户配置API 852
24.2.9 匿名用户配置 854
24.3 自定义的用户配置提供程序 856
24.3.1 自定义的用户配置提供程序类 856
24.3.2 设计FactoredProfileProvider 858
24.3.3 通过编码实现FactoredProfileProvider 859
24.3.4 测试FactoredProfileProvider 862
24.4 总结 865
第25章 加密 866
25.1 加密数据:机密性问题 866
25.2 .NET加密命名空间 867
25.3 理解.NET加密类 870
25.3.1 对称加密算法 870
25.3.2 非对称加密 872
25.3.3 抽象加密类 872
25.3.4 ICryptoTransform接口 873
25.3.5 CryptoStream类 873
25.4 加密敏感数据 874
25.4.1 管理秘密信息 875
25.4.2 使用对称算法 876
25.4.3 使用非对称算法 881
25.4.4 加密数据库中的敏感数据 883
25.5 加密查询字符串 887
25.5.1 包装查询字符串 888
25.5.2 创建一个测试页面 890
25.6 总结 892
第26章 自定义成员资格提供程序 893
26.1 自定义提供程序的架构 893
26.2 创建自定义提供程序的基本步骤 895
26.2.1 自定义提供程序的总体设计 895
26.2.2 设计并实现自定义存储 896
26.2.3 实现提供程序类 903
26.2.4 使用自定义提供程序类 921
26.3 总结 925
第五部分 高级用户界面
第27章 自定义服务器控件 928
27.1 自定义服务器控件入门 928
27.1.1 创建简单的自定义控件 928
27.1.2 使用自定义控件 930
27.1.3 工具箱中的自定义控件 931
27.1.4 创建支持样式属性的Web控件 933
27.1.5 呈现过程 936
27.2 处理不同的浏览器 937
27.2.1 HtmlTextWriter 937
27.2.2 浏览器检测 938
27.2.3 浏览器属性 940
27.2.4 覆盖浏览器类型侦测 942
27.2.5 自适应呈现 942
27.3 控件状态和事件 944
27.3.1 视图状态 944
27.3.2 控件状态 946
27.3.3 回传数据和change事件 947
27.3.4 触发回传 950
27.4 扩展现有的Web控件 951
27.4.1 组合控件 952
27.4.2 派生控件 954
27.5 模板化控件 957
27.5.1 创建模板化控件 957
27.5.2 使用自定义模板 959
27.5.3 样式 962
27.6 总结 965
第28章 设计时支持 966
28.1 主要成员 966
28.2 设计时特性 967
28.2.1 “属性”窗口 967
28.2.2 特性与继承 970
28.2.3 工具箱图标 971
28.3 Web资源 972
28.3.1 创建资源 972
28.3.2 获取资源 973
28.3.3 文本替换 973
28.4 代码序列化 974
28.4.1 类型转换器 974
28.4.2 序列化特性 981
28.4.3 类型编辑器 983
28.5 控件设计器 985
28.5.1 设计时HTML 985
28.5.2 智能标签 987
28.6 总结 991
第29章 动态图形和GDI+ 992
29.1 ImageMap控件 992
29.1.1 创建热点 993
29.1.2 处理热点单击 994
29.1.3 自定义热点 995
29.2 使用GDI+画图 996
29.2.1 简单绘制 997
29.2.2 图像格式和质量 998
29.2.3 Graphics类 999
29.2.4 使用GraphicsPath 1001
29.2.5 画笔 1002
29.2.6 画刷 1004
29.3 在网页上嵌入动态图形 1006
29.3.1 使用PNG格式 1007
29.3.2 传递信息给动态图像 1007
29.3.3 使用GDI+的自定义控件 1010
29.4 用GDI+绘制图表 1013
29.5 总结 1018
第30章 使用Web部件页面的门户 1019
30.1 典型门户页面 1019
30.2 初级Web部件页面 1021
30.2.1 创建页面设计 1021
30.2.2 WebPartManager和WebPartZone控件 1022
30.2.3 向页面添加Web部件 1024
30.2.4 定制页面 1027
30.3 创建Web部件 1029
30.3.1 简单的Web部件任务 1029
30.3.2 开发高级Web部件 1036
30.3.3 Web部件编辑器 1044
30.3.4 连接Web部件 1050
30.3.5 自定义动词和Web部件 1056
30.3.6 用户控件和高级Web部件 1057
30.3.7 动态上传Web部件 1060
30.3.8 针对Web部件的授权 1065
30.3.9 个性化的最后任务 1066
30.4 总结 1066
第六部分 客户端程序设计
第31章 JavaScript和Ajax技术 1068
31.1 JavaScript本质 1068
31.1.1 HTML文档对象模型 1069
31.1.2 客户端事件 1069
31.1.3 脚本块 1071
31.1.4 操纵HTML元素 1073
31.1.5 调试JavaScript 1073
31.2 基本的JavaScript示例 1075
31.2.1 创建JavaScript页面处理器 1075
31.2.2 使用JavaScript异步下载图片 1078
31.2.3 呈现脚本块 1082
31.3 脚本注入攻击 1083
31.3.1 请求验证 1083
31.3.2 禁用请求验证 1084
31.4 带有JavaScript的自定义控件 1085
31.4.1 弹出窗口 1085
31.4.2 滚动按钮 1089
31.5 框架 1091
31.5.1 框架导航 1092
31.5.2 内联框架 1093
31.6 理解Ajax 1094
31.6.1 XMLHttpRequest对象 1095
31.6.2 Ajax示例 1097
31.7 在客户端回调中使用Ajax 1100
31.7.1 创建客户端回调 1100
31.7.2 深入了解客户端回调 1105
31.7.3 自定义控件里的客户端回调 1106
31.8 总结 1109
第32章 ASP.NET AJAX 1110
32.1 介绍ASP.NET AJAX 1110
32.1.1 客户端的ASP.NET AJAX:脚本库 1111
32.1.2 服务器端的ASP.NET AJAX:ScriptManager 1112
32.2 服务器回调 1113
32.2.1 ASP.NET AJAX中的Web服务 1113
32.2.2 Web服务代理 1120
32.2.3 在页面里放置Web方法 1121
32.2.4 ASP.NET AJAX应用程序服务 1122
32.3 ASP.NET AJAX服务器控件 1128
32.3.1 使用UpdatePanel的局部呈现 1129
32.3.2 使用Timer的定时刷新 1135
32.3.3 使用UpdateProgress的长时间更新 1136
32.3.4 管理浏览器历史 1139
32.4 深入客户端库 1142
32.4.1 理解客户端模型 1143
32.4.2 JavaScript的面向对象编程 1144
32.4.3 网页框架 1150
32.5 控件扩展器 1155
32.5.1 安装ASP.NET AJAX控件工具包 1156
32.5.2 AutoCompleteExtender 1157
32.5.3 ASP.NET AJAX控件工具包 1159
32.6 总结 1162
第33章 Silverlight 1163
33.1 理解Silverlight 1163
33.1.1 Silverlight与Flash对比 1164
33.1.2 Silverlight系统需求 1166
33.1.3 为Visual Studio安装Silverlight工具 1167
33.2 创建Silverlight解决方案 1167
33.2.1 Silverlight编译 1168
33.2.2 入口页面 1169
33.3 创建Silverlight项目 1173
33.3.1 设计Silverlight页面 1174
33.3.2 理解XAML 1177
33.3.3 设置属性 1178
33.3.4 XAML代码隐藏 1179
33.3.5 处理事件 1180
33.3.6 了解Silverlight类库 1181
33.4 布局 1182
33.4.1 画布(Canvas) 1182
33.4.2 网格(Grid) 1187
33.5 动画 1191
33.5.1 动画基础知识 1191
33.5.2 定义动画 1191
33.5.3 StoryBoard类 1192
33.5.4 交互式动画实例 1194
33.5.5 变换 1198
33.6 Silverlight和ASP.NET 1201
33.6.1 Silverlight使用Web服务 1201
33.6.2 MediaPlayer控件 1206
33.7 总结 1209
第1章 ASP.NET简介 2
1.1 Web开发技术的演进 2
1.1.1 早期的Web开发 2
1.1.2 .NET革命 3
1.2 ASP.NET的7大要点 3
1.2.1 要点1:ASP.NET是同.NET Framework集成在一起的 3
1.2.2 要点2:ASP.NET是编译执行的,而不是解释执行的 4
1.2.3 要点3:ASP.NET支持多语言 6
1.2.4 要点4:ASP.NET运行在公共语言运行库内 7
1.2.5 要点5:ASP.NET是面向对象的 8
1.2.6 要点6:ASP.NET是跨设备和跨浏览器的 10
1.2.7 要点7:ASP.NET易于部署和配置 10
1.3 ASP.NET:故事在继续 11
1.3.1 ASP.NET 2.0 11
1.3.2 ASP.NET 3.5 12
1.3.3 .NET 3.5 Service Pack 1 16
1.3.4 ASP.NET 4.0预览 16
1.3.5 Silverlight 17
1.4 总结 17
第2章 Visual Studio 18
2.1 .NET开发模型 19
2.1.1 编译器 19
2.1.2 Visual Studio集成开发环境 19
2.1.3 网站和Web项目 20
2.1.4 创建无项目文件的网站 20
2.1.5 多目标 23
2.1.6 设计网页 24
2.2 Visual Studio集成开发环境 29
2.2.1 解决方案资源管理器 30
2.2.2 文档窗口 31
2.2.3 工具箱 32
2.2.4 错误列表和任务列表 32
2.2.5 服务器资源管理器 34
2.3 代码编辑器 35
2.3.1 添加程序集引用 35
2.3.2 智能感知和大纲显示 37
2.4 编码模型 39
2.4.1 代码隐藏文件如何与页面连接 41
2.4.2 控件标签如何与页面变量连接 42
2.4.3 事件如何与事件处理程序连接 43
2.5 Web项目 44
2.5.1 创建Web项目 46
2.5.2 迁移旧版Visual Studio创建的网站 47
2.6 Visual Studio调试 48
2.6.1 单步调试 49
2.6.2 变量监视 51
2.6.3 高级断点 51
2.7 Visual Studio宏 52
2.8 Web Development Helper 54
2.9 总结 55
第3章 Web窗体 56
3.1 页面处理 56
3.1.1 HTML表单 56
3.1.2 动态用户界面 58
3.1.3 ASP.NET事件模型 59
3.1.4 自动回送 59
3.1.5 视图状态 61
3.1.6 XHTML兼容性 64
3.2 Web窗体处理阶段 68
3.2.1 页面框架初始化 69
3.2.2 用户代码初始化 69
3.2.3 验证 69
3.2.4 事件处理 70
3.2.5 自动数据绑定 70
3.2.6 清除 71
3.2.7 页面流示例 71
3.3 作为控件容器的页面 73
3.3.1 显示控件树 73
3.3.2 页头 77
3.3.3 动态控件的创建 77
3.4 Page类 79
3.4.1 Session、Application和Cache 79
3.4.2 Request 80
3.4.3 Response 81
3.4.4 Server 82
3.4.5 User 85
3.4.6 Trace 85
3.4.7 访问其他类中的HTTP上下文 89
3.5 总结 90
第4章 服务器控件 91
4.1 服务器控件的类型 91
4.2 HTML服务器控件 93
4.2.1 HtmlControl类 93
4.2.2 HtmlContainerControl类 94
4.2.3 HtmlInputControl类 94
4.2.4 HTML服务器控件类 95
4.2.5 设置Style特性和其他属性 96
4.2.6 编程创建服务器控件 97
4.2.7 处理服务器端事件 98
4.3 Web控件 100
4.3.1 WebControl基类 101
4.3.2 基本的Web控件类 102
4.3.3 单位 103
4.3.4 枚举 104
4.3.5 颜色 104
4.3.6 字体 105
4.3.7 焦点 106
4.3.8 默认按钮 107
4.3.9 可滚动面板 108
4.3.10 处理Web控件事件 108
4.4 List控件 111
4.4.1 Selectable列表控件 112
4.4.2 BulletedList控件 113
4.5 输入验证控件 115
4.5.1 验证控件 115
4.5.2 验证流程 116
4.5.3 BaseValidator类 118
4.5.4 RequiredFieldValidator控件 118
4.5.5 RangeValidator控件 119
4.5.6 CompareValidator控件 119
4.5.7 RegularExpressionValidator控件 120
4.5.8 CustomValidator控件 122
4.5.9 ValidationSummary控件 123
4.5.10 通过编程使用验证器 123
4.5.11 验证组 125
4.6 富控件 126
4.6.1 AdRotator控件 127
4.6.2 Calendar控件 128
4.7 总结 130
第5章 ASP.NET应用程序 131
5.1 剖析ASP.NET应用程序 131
5.1.1 应用程序域 131
5.1.2 应用程序生命周期 132
5.1.3 应用程序更新 133
5.1.4 应用程序目录结构 134
5.2 global.asax应用程序文件 134
5.2.1 应用程序事件 136
5.2.2 演示应用程序事件 137
5.3 ASP.NET配置 138
5.3.1 machine.config文件 139
5.3.2 web.config文件 141
5.3.3 设置 144
5.3.4 通过编程读写配置节 148
5.3.5 网站管理工具(WAT) 150
5.3.6 扩展配置文件结构 150
5.3.7 加密配置节 155
5.4 .NET组件 156
5.4.1 创建组件 157
5.4.2 通过App_Code目录使用组件 158
5.4.3 通过Bin目录使用组件 159
5.5 扩展HTTP管道 161
5.5.1 HTTP处理程序和HTTP模块 161
5.5.2 创建自定义的HTTP处理程序 163
5.5.3 配置自定义的HTTP处理程序 164
5.5.4 在不配置IIS的情况注册HTTP处理程序 165
5.5.5 创建高级的HTTP处理程序 166
5.5.6 为非HTML内容创建HTTP处理程序 167
5.5.7 创建自定义HTTP模块 170
5.6 总结 173
第6章 状态管理 174
6.1 ASP.NET状态管理 174
6.2 视图状态 176
6.2.1 视图状态示例 176
6.2.2 在视图状态中保存对象 178
6.2.3 保持成员变量 179
6.2.4 视图状态评估 180
6.2.5 视图状态安全 182
6.3 在页面间传送信息 183
6.3.1 查询字符串 183
6.3.2 跨页回发 185
6.4 cookie 190
6.5 会话状态 191
6.5.1 会话架构 191
6.5.2 使用会话状态 193
6.5.3 配置会话状态 194
6.5.4 会话状态安全 198
6.6 应用程序状态 199
6.7 总结 202
第二部分 数据访问
第7章 ADO.NET基础 204
7.1 ADO.NET架构 205
7.1.1 ADO.NET数据提供程序 205
7.1.2 ADO.NET的标准化 207
7.1.3 基本ADO.NET类 207
7.2 Connection类 208
7.2.1 连接字符串 208
7.2.2 测试连接 209
7.2.3 连接池 211
7.2.4 连接统计 212
7.3 Command类和DataReader类 213
7.3.1 Command基础 213
7.3.2 DataReader类 214
7.3.3 ExecuteReader()方法和DataReader 215
7.3.4 ExecuteScalar()方法 219
7.3.5 ExecuteNonQuery()方法 219
7.3.6 SQL注入攻击 220
7.3.7 使用参数化命令 222
7.3.8 调用存储过程 223
7.4 事务 226
7.4.1 事务和ASP.NET应用程序 226
7.4.2 隔离级别 230
7.4.3 保存点 231
7.5 提供程序无关的代码 232
7.5.1 创建工厂 232
7.5.2 用工厂创建对象 233
7.5.3 使用提供程序无关的代码的查询 234
7.6 总结 235
第8章 数据组件和DataSet 236
8.1 构建数据访问组件 236
8.1.1 数据包 237
8.1.2 存储过程 238
8.1.3 数据应用类 239
8.1.4 测试数据库组件 245
8.2 非连接的数据 247
8.2.1 Web应用程序和DataSet 247
8.2.2 XML集成 248
8.3 DataSet类 248
8.4 DataAdapter类 249
8.4.1 填充DataSet 251
8.4.2 使用多个表和关系 252
8.4.3 查找特定行 254
8.4.4 在数据访问类里使用DataSet 255
8.4.5 数据绑定 256
8.5 DataView类 257
8.5.1 使用DataView排序 257
8.5.2 使用DataView过滤 258
8.5.3 使用关系的高级过滤 260
8.5.4 计算列 261
8.6 强类型DataSet 262
8.6.1 自定义TableAdapter 263
8.6.2 创建强类型DataSet 264
8.6.3 深入强类型DataSet 265
8.6.4 使用强类型DataSet 268
8.7 总结 269
第9章 数据绑定 270
9.1 基本的数据绑定 270
9.1.1 单值绑定 271
9.1.2 其他类型的表达式 272
9.1.3 重复值绑定 276
9.2 数据源控件 282
9.3 SqlDataSource 284
9.3.1 选择记录 285
9.3.2 参数化命令 287
9.3.3 错误处理 290
9.3.4 更新记录 291
9.3.5 删除记录 294
9.3.6 插入记录 295
9.3.7 SqlDataSource的不足 296
9.4 ObjectDataSource 296
9.4.1 选择记录 297
9.4.2 更新记录 301
9.4.3 使用数据对象执行更新 302
9.5 数据源控件的限制 305
9.5.1 问题 305
9.5.2 添加其他项 306
9.5.3 使用SqlDataSource处理其他选项 307
9.5.4 使用ObjectDataSource处理其他选项 307
9.6 总结 308
第10章 富数据控件 309
10.1 GridView 310
10.2 格式化GridView 313
10.2.1 格式化字段 313
10.2.2 样式 315
10.2.3 格式化特定值 318
10.3 GridView行选择 319
10.3.1 使用选择来创建主-从表单 320
10.3.2 SelectedIndexChanged事件 321
10.3.3 将数据字段用作选择按钮 322
10.4 对GridView排序 323
10.4.1 使用SqlDataSource排序 323
10.4.2 使用ObjectDataSource排序 324
10.4.3 排序和选择 325
10.4.4 高级排序 326
10.5 GridView分页 327
10.5.1 自动分页 328
10.5.2 ObjectDataSource的自定义分页 329
10.5.3 自定义分页栏 331
10.6 GridView模板 332
10.6.1 使用多个模板 334
10.6.2 在Visual Studio中编辑模板 335
10.6.3 绑定到方法 336
10.6.4 处理模板中的事件 337
10.6.5 使用模板编辑 338
10.7 ListView 343
10.7.1 分组 345
10.7.2 分页 346
10.8 DetailsView和FormView 347
10.8.1 DetailsView 348
10.8.2 FormView 350
10.9 高级网格 352
10.9.1 GridView中的汇总 352
10.9.2 单个表中的父/子视图 353
10.9.3 使用查找表编辑字段 355
10.9.4 处理来自数据库的图片 357
10.9.5 探测并发冲突 362
10.10 总结 366
第11章 缓存和异步页面 367
11.1 理解ASP.NET缓存 367
11.2 输出缓存 368
11.2.1 声明性的输出缓存 368
11.2.2 缓存和查询字符串 369
11.2.3 使用特定查询字符串参数的缓存 370
11.2.4 自定义缓存控制 370
11.2.5 使用HttpCachePolicy类进行缓存 372
11.2.6 缓存后替换和部分页缓存 372
11.2.7 缓存用户配置 374
11.2.8 缓存配置 375
11.3 数据缓存 376
11.3.1 向缓存添加项目 377
11.3.2 简单的缓存测试 378
11.3.3 缓存优先级 379
11.3.4 使用数据源控件的缓存 380
11.4 缓存依赖 383
11.4.1 文件和缓存项目依赖 383
11.4.2 聚合依赖 384
11.4.3 移除项目回调 384
11.4.4 理解SQL缓存通知 386
11.4.5 SQL Server 2000中的缓存通知 387
11.4.6 SQL Server 2005和SQL Server 2008中的缓存通知 391
11.5 自定义缓存依赖 393
11.5.1 基本的自定义缓存依赖 393
11.5.2 使用消息队列的自定义缓存依赖 394
11.6 异步页面 397
11.6.1 创建异步页面 397
11.6.2 在异步页面中查询数据 399
11.6.3 错误处理 400
11.6.4 在异步任务中使用缓存 403
11.6.5 多异步任务和超时 405
11.7 总结 406
第12章 文件和流 407
12.1 使用文件系统 407
12.1.1 Directory类和File类 407
12.1.2 DirectoryInfo类和FileInfo类 409
12.1.3 DriveInfo类 412
12.1.4 使用Attributes 412
12.1.5 使用通配符过滤文件 414
12.1.6 获取文件的版本信息 414
12.1.7 Path类 415
12.1.8 文件浏览器 417
12.2 使用流读写文件 421
12.2.1 文本文件 422
12.2.2 二进制文件 424
12.2.3 上传文件 424
12.2.4 使文件对多用户安全 426
12.2.5 压缩 430
12.3 序列化 431
12.4 总结 434
第13章 LINQ 435
13.1 LINQ基础 435
13.1.1 延迟执行 437
13.1.2 LINQ是如何工作的 437
13.1.3 LINQ表达式 438
13.1.4 揭秘LINQ表达式 444
13.2 LINQ to DataSet 447
13.2.1 强类型的DataSet 448
13.2.2 空值 449
13.3 LINQ to SQL 449
13.3.1 数据实体类 451
13.3.2 DataContext 452
13.3.3 揭秘LINQ to SQL查询 453
13.3.4 LINQ to SQL和数据库组件 455
13.3.5 选取单个记录或值 458
13.3.6 自动生成数据类 459
13.3.7 关系 464
13.3.8 为存储过程生成方法 471
13.3.9 提交变更 472
13.4 LinqDataSource 477
13.4.1 显示数据 478
13.4.2 获取关联数据 480
13.4.3 编辑数据 481
13.4.4 验证 482
13.5 总结 484
第14章 XML 485
14.1 什么时候使用XML 485
14.2 XML简介 486
14.2.1 XML的优点 487
14.2.2 格式良好的XML 487
14.2.3 XML命名空间 488
14.2.4 XML架构 489
14.3 基于流的XML处理 491
14.3.1 写XML文件 491
14.3.2 读取XML文件 494
14.4 内存中的XML处理 496
14.4.1 XmlDocument 497
14.4.2 XPathNavigator 500
14.4.3 XDocument 502
14.5 搜索XML内容 506
14.5.1 搜索XmlDocument 507
14.5.2 使用XPath搜索XmlDocument 509
14.5.3 使用LINQ搜索XDocument 510
14.6 验证XML内容 512
14.6.1 基本架构 512
14.6.2 验证XmlDocument 513
14.6.3 使用XDocument进行验证 514
14.7 转换XML内容 515
14.7.1 基本的样式表 515
14.7.2 使用XslCompiledTransform 516
14.7.3 使用Xml控件 518
14.7.4 使用LINQ to XML转换XML 518
14.8 XML数据绑定 520
14.8.1 非层次化绑定 520
14.8.2 使用XPath 522
14.8.3 嵌套的网格 524
14.8.4 使用TreeView的层次化绑定 525
14.8.5 使用XSLT 527
14.8.6 绑定到来自其他源的XML内容 528
14.8.7 通过XmlDataSource更新XML 529
14.9 XML和ADO.NET数据集 529
14.9.1 把DataSet转换为XML 530
14.9.2 把DataSet作为XML访问 531
14.10 总结 533
第三部分 构建ASP.NET网站
第15章 用户控件 536
15.1 用户控件基础 536
15.1.1 创建简单的用户控件 537
15.1.2 把页面转换成用户控件 538
15.2 为用户控件添加代码 539
15.2.1 处理事件 539
15.2.2 添加属性 540
15.2.3 使用自定义对象 541
15.2.4 添加事件 544
15.2.5 公开内部Web控件 547
15.3 动态加载用户控件 547
15.4 局部页面缓存 550
15.4.1 VaryByControl 551
15.4.2 共享缓存控件 552
15.5 总结 553
第16章 主题和母版页 554
16.1 层叠样式表 554
16.1.1 创建样式表 554
16.1.2 应用样式表规则 556
16.2 主题 558
16.2.1 主题文件夹和外观 559
16.2.2 应用简单主题 560
16.2.3 处理主题冲突 561
16.2.4 为同一控件创建多个外观 562
16.2.5 含有模板和图片的外观 562
16.2.6 在主题里使用CSS 564
16.2.7 通过配置文件来应用主题 564
16.2.8 动态应用主题 565
16.3 标准化网站布局 566
16.4 母版页基础 567
16.4.1 简单的母版页 567
16.4.2 简单的内容页 569
16.4.3 默认内容 571
16.4.4 具有表格和CSS布局的母版页 571
16.4.5 母版页和相对路径 574
16.4.6 通过配置文件应用母版页 574
16.5 高级母版页 575
16.5.1 和母版页类交互 575
16.5.2 动态设置母版页 576
16.5.3 嵌套母版页 577
16.6 总结 578
第17章 网站导航 579
17.1 多视图页面 579
17.1.1 MultiView控件 580
17.1.2 Wizard控件 583
17.2 站点地图 590
17.2.1 定义站点地图 590
17.2.2 绑定站点地图 592
17.2.3 导航路径 592
17.2.4 显示站点地图的一部分 594
17.2.5 站点地图对象 597
17.2.6 加入自定义站点地图信息 598
17.2.7 创建自定义的SiteMapProvider 599
17.2.8 URL映射 605
17.2.9 安全调整 606
17.3 TreeView控件 607
17.3.1 TreeNode 608
17.3.2 按需填充结点 610
17.3.3 TreeView样式 612
17.4 Menu控件 615
17.4.1 Menu样式 617
17.4.2 Menu模板 618
17.5 总结 620
第18章 网站部署 621
18.1 IIS 621
18.1.1 IIS站点和虚拟目录 622
18.1.2 IIS管理控制台和IIS配置 623
18.1.3 将网址、虚拟目录和文件映射到URL 624
18.1.4 深入IIS架构 625
18.1.5 安装IIS 638
18.2 管理网站 642
18.2.1 管理虚拟目录以及使用IIS 5.x和IIS 6.0的网站 643
18.2.2 管理IIS 6.0中的应用程序池 647
18.2.3 在IIS 7.0里管理虚拟目录和站点 652
18.2.4 在IIS 7.0里管理应用程序池 662
18.3 部署ASP.NET应用程序 664
18.3.1 在IIS 5.x和IIS 6.0上验证ASP.NET安装 665
18.3.2 在IIS 5.x和IIS 6.0上ASP.NET并行执行 666
18.3.3 IIS 7.0里的ASP.NET并行执行 667
18.3.4 在IIS 5.x上部署时配置HTTP运行时设置 668
18.3.5 在ASP.NET中编译模型 669
18.3.6 使用Visual Studio进行部署 672
18.3.7 Visual Studio 2005 Web部署项目 673
18.4 ASP.NET中的VirtualPathProvider 677
18.5 ASP.NET里的健康监视 681
18.5.1 理解基本结构 682
18.5.2 事件和提供程序 682
18.6 总结 685
第四部分 安全
第19章 ASP.NET安全模型 688
19.1 何为创建安全软件 688
19.1.1 理解潜在的威胁 688
19.1.2 安全编程原则 689
19.1.3 理解Gatekeeper 690
19.2 理解安全级别 691
19.2.1 验证 691
19.2.2 授权 692
19.2.3 机密性和完整性 693
19.2.4 互相协作 694
19.3 IIS安全 695
19.3.1 IIS 5.x和IIS 6.0中的验证和授权 696
19.3.2 IIS 7.0的安全配置 698
19.3.3 理解SSL 702
19.4 ASP.NET安全架构 709
19.4.1 验证 710
19.4.2 授权 711
19.4.3 安全上下文 712
19.4.4 成员资格API和角色API 713
19.5 总结 714
第20章 表单验证 715
20.1 表单验证介绍 715
20.1.1 为什么使用表单验证 716
20.1.2 为什么不使用表单验证 717
20.1.3 为什么不自己实现cookie验证 719
20.1.4 表单验证类 719
20.2 实现表单验证 720
20.2.1 配置表单验证 720
20.2.2 禁止匿名用户访问 722
20.2.3 创建自定义登录页面 723
20.2.4 自定义凭证存储 728
20.2.5 表单验证中的持久化cookie 729
20.3 IIS 7.0和表单验证 730
20.4 总结 735
第21章 成员资格 736
21.1 介绍ASP.NET的成员资格API 736
21.2 使用成员资格API 738
21.2.1 配置表单验证 740
21.2.2 创建数据存储 740
21.2.3 配置连接字符串和成员资格提供程序 745
21.2.4 创建并验证用户 748
21.3 使用安全控件 749
21.3.1 Login控件 750
21.3.2 LoginStatus控件 759
21.3.3 LoginView控件 760
21.3.4 PasswordRecovery控件 761
21.3.5 ChangePassword控件 764
21.3.6 CreateUserWizard控件 765
21.4 在IIS 7.0里配置成员资格 769
21.4.1 配置提供程序和用户 769
21.4.2 在其他应用程序里使用成员资格API 770
21.5 使用Membership类 772
21.5.1 从存储中获得用户 773
21.5.2 更新存储中的用户 775
21.5.3 创建和删除用户 776
21.5.4 检验用户 777
21.5.5 在Windows窗体中使用成员资格 777
21.6 总结 779
第22章 Windows验证 780
22.1 介绍Windows验证 780
22.1.1 为什么使用Windows验证 780
22.1.2 为什么不使用Windows验证 782
22.1.3 Windows验证机制 782
22.2 实现Windows验证 787
22.2.1 配置IIS 5.x和IIS 6.0 787
22.2.2 配置IIS 7.0 789
22.2.3 配置ASP.NET 790
22.2.4 禁止匿名用户访问 793
22.2.5 访问Windows用户信息 794
22.3 身份模拟 799
22.3.1 在Windows 2000中执行身份模拟 799
22.3.2 在Windows XP上面执行身份模拟 800
22.3.3 在Windows Server 2003上执行身份模拟和委托 801
22.3.4 在Windows Vista上执行身份模拟 802
22.3.5 在Windows Server 2008上执行身份模拟和委托 803
22.3.6 经过配置的身份模拟 803
22.3.7 可编程的身份模拟 806
22.4 总结 808
第23章 授权和角色 809
23.1 URL授权 809
23.2 文件授权 815
23.3 在代码中检查授权 815
23.3.1 使用IsInRole()方法 815
23.3.2 使用PrincipalPermission类 816
23.4 为基于角色的授权使用角色API 818
23.4.1 和角色一起使用LoginView控件 823
23.4.2 通过程序访问角色 824
23.4.3 在Windows验证中使用角色API 826
23.5 在IIS 5.x和IIS 6.0中保护非ASP.NET资源 828
23.5.1 添加文件类型的映射 829
23.5.2 编写自定义的HTTP处理程序 830
23.6 IIS 7.0里的授权和角色 831
23.6.1 在IIS 7.0里使用ASP.NET角色授权 833
23.6.2 在IIS 7.0中管理ASP.NET角色 835
23.7 总结 837
第24章 用户配置 838
24.1 理解用户配置 838
24.1.1 用户配置的性能 838
24.1.2 用户配置如何存储数据 839
24.1.3 用户配置和验证 840
24.1.4 用户配置与自定义的数据组件 840
24.2 使用SqlProfileProvider 841
24.2.1 创建用户配置表 841
24.2.2 配置提供程序 843
24.2.3 定义用户配置属性 844
24.2.4 使用用户配置属性 845
24.2.5 用户配置序列化 846
24.2.6 用户配置组 848
24.2.7 用户配置和自定义的数据类型 848
24.2.8 用户配置API 852
24.2.9 匿名用户配置 854
24.3 自定义的用户配置提供程序 856
24.3.1 自定义的用户配置提供程序类 856
24.3.2 设计FactoredProfileProvider 858
24.3.3 通过编码实现FactoredProfileProvider 859
24.3.4 测试FactoredProfileProvider 862
24.4 总结 865
第25章 加密 866
25.1 加密数据:机密性问题 866
25.2 .NET加密命名空间 867
25.3 理解.NET加密类 870
25.3.1 对称加密算法 870
25.3.2 非对称加密 872
25.3.3 抽象加密类 872
25.3.4 ICryptoTransform接口 873
25.3.5 CryptoStream类 873
25.4 加密敏感数据 874
25.4.1 管理秘密信息 875
25.4.2 使用对称算法 876
25.4.3 使用非对称算法 881
25.4.4 加密数据库中的敏感数据 883
25.5 加密查询字符串 887
25.5.1 包装查询字符串 888
25.5.2 创建一个测试页面 890
25.6 总结 892
第26章 自定义成员资格提供程序 893
26.1 自定义提供程序的架构 893
26.2 创建自定义提供程序的基本步骤 895
26.2.1 自定义提供程序的总体设计 895
26.2.2 设计并实现自定义存储 896
26.2.3 实现提供程序类 903
26.2.4 使用自定义提供程序类 921
26.3 总结 925
第五部分 高级用户界面
第27章 自定义服务器控件 928
27.1 自定义服务器控件入门 928
27.1.1 创建简单的自定义控件 928
27.1.2 使用自定义控件 930
27.1.3 工具箱中的自定义控件 931
27.1.4 创建支持样式属性的Web控件 933
27.1.5 呈现过程 936
27.2 处理不同的浏览器 937
27.2.1 HtmlTextWriter 937
27.2.2 浏览器检测 938
27.2.3 浏览器属性 940
27.2.4 覆盖浏览器类型侦测 942
27.2.5 自适应呈现 942
27.3 控件状态和事件 944
27.3.1 视图状态 944
27.3.2 控件状态 946
27.3.3 回传数据和change事件 947
27.3.4 触发回传 950
27.4 扩展现有的Web控件 951
27.4.1 组合控件 952
27.4.2 派生控件 954
27.5 模板化控件 957
27.5.1 创建模板化控件 957
27.5.2 使用自定义模板 959
27.5.3 样式 962
27.6 总结 965
第28章 设计时支持 966
28.1 主要成员 966
28.2 设计时特性 967
28.2.1 “属性”窗口 967
28.2.2 特性与继承 970
28.2.3 工具箱图标 971
28.3 Web资源 972
28.3.1 创建资源 972
28.3.2 获取资源 973
28.3.3 文本替换 973
28.4 代码序列化 974
28.4.1 类型转换器 974
28.4.2 序列化特性 981
28.4.3 类型编辑器 983
28.5 控件设计器 985
28.5.1 设计时HTML 985
28.5.2 智能标签 987
28.6 总结 991
第29章 动态图形和GDI+ 992
29.1 ImageMap控件 992
29.1.1 创建热点 993
29.1.2 处理热点单击 994
29.1.3 自定义热点 995
29.2 使用GDI+画图 996
29.2.1 简单绘制 997
29.2.2 图像格式和质量 998
29.2.3 Graphics类 999
29.2.4 使用GraphicsPath 1001
29.2.5 画笔 1002
29.2.6 画刷 1004
29.3 在网页上嵌入动态图形 1006
29.3.1 使用PNG格式 1007
29.3.2 传递信息给动态图像 1007
29.3.3 使用GDI+的自定义控件 1010
29.4 用GDI+绘制图表 1013
29.5 总结 1018
第30章 使用Web部件页面的门户 1019
30.1 典型门户页面 1019
30.2 初级Web部件页面 1021
30.2.1 创建页面设计 1021
30.2.2 WebPartManager和WebPartZone控件 1022
30.2.3 向页面添加Web部件 1024
30.2.4 定制页面 1027
30.3 创建Web部件 1029
30.3.1 简单的Web部件任务 1029
30.3.2 开发高级Web部件 1036
30.3.3 Web部件编辑器 1044
30.3.4 连接Web部件 1050
30.3.5 自定义动词和Web部件 1056
30.3.6 用户控件和高级Web部件 1057
30.3.7 动态上传Web部件 1060
30.3.8 针对Web部件的授权 1065
30.3.9 个性化的最后任务 1066
30.4 总结 1066
第六部分 客户端程序设计
第31章 JavaScript和Ajax技术 1068
31.1 JavaScript本质 1068
31.1.1 HTML文档对象模型 1069
31.1.2 客户端事件 1069
31.1.3 脚本块 1071
31.1.4 操纵HTML元素 1073
31.1.5 调试JavaScript 1073
31.2 基本的JavaScript示例 1075
31.2.1 创建JavaScript页面处理器 1075
31.2.2 使用JavaScript异步下载图片 1078
31.2.3 呈现脚本块 1082
31.3 脚本注入攻击 1083
31.3.1 请求验证 1083
31.3.2 禁用请求验证 1084
31.4 带有JavaScript的自定义控件 1085
31.4.1 弹出窗口 1085
31.4.2 滚动按钮 1089
31.5 框架 1091
31.5.1 框架导航 1092
31.5.2 内联框架 1093
31.6 理解Ajax 1094
31.6.1 XMLHttpRequest对象 1095
31.6.2 Ajax示例 1097
31.7 在客户端回调中使用Ajax 1100
31.7.1 创建客户端回调 1100
31.7.2 深入了解客户端回调 1105
31.7.3 自定义控件里的客户端回调 1106
31.8 总结 1109
第32章 ASP.NET AJAX 1110
32.1 介绍ASP.NET AJAX 1110
32.1.1 客户端的ASP.NET AJAX:脚本库 1111
32.1.2 服务器端的ASP.NET AJAX:ScriptManager 1112
32.2 服务器回调 1113
32.2.1 ASP.NET AJAX中的Web服务 1113
32.2.2 Web服务代理 1120
32.2.3 在页面里放置Web方法 1121
32.2.4 ASP.NET AJAX应用程序服务 1122
32.3 ASP.NET AJAX服务器控件 1128
32.3.1 使用UpdatePanel的局部呈现 1129
32.3.2 使用Timer的定时刷新 1135
32.3.3 使用UpdateProgress的长时间更新 1136
32.3.4 管理浏览器历史 1139
32.4 深入客户端库 1142
32.4.1 理解客户端模型 1143
32.4.2 JavaScript的面向对象编程 1144
32.4.3 网页框架 1150
32.5 控件扩展器 1155
32.5.1 安装ASP.NET AJAX控件工具包 1156
32.5.2 AutoCompleteExtender 1157
32.5.3 ASP.NET AJAX控件工具包 1159
32.6 总结 1162
第33章 Silverlight 1163
33.1 理解Silverlight 1163
33.1.1 Silverlight与Flash对比 1164
33.1.2 Silverlight系统需求 1166
33.1.3 为Visual Studio安装Silverlight工具 1167
33.2 创建Silverlight解决方案 1167
33.2.1 Silverlight编译 1168
33.2.2 入口页面 1169
33.3 创建Silverlight项目 1173
33.3.1 设计Silverlight页面 1174
33.3.2 理解XAML 1177
33.3.3 设置属性 1178
33.3.4 XAML代码隐藏 1179
33.3.5 处理事件 1180
33.3.6 了解Silverlight类库 1181
33.4 布局 1182
33.4.1 画布(Canvas) 1182
33.4.2 网格(Grid) 1187
33.5 动画 1191
33.5.1 动画基础知识 1191
33.5.2 定义动画 1191
33.5.3 StoryBoard类 1192
33.5.4 交互式动画实例 1194
33.5.5 变换 1198
33.6 Silverlight和ASP.NET 1201
33.6.1 Silverlight使用Web服务 1201
33.6.2 MediaPlayer控件 1206
33.7 总结 1209
猜您喜欢