第1章 架构 1
1.1 基本原理 1
1.1.1 动态内容 1
1.1.2 服务器端控件 5
1.1.3 数据绑定 8
1.2 代码隐藏 10
1.2.1 有关代码隐藏的基本知识 10
1.2.2 ASP.NET 2.0中的代码隐藏模型 12
1.3 网页的生命周期 16
1.3.1 常见事件 16
1.3.2 新增的事件 18
1.3.3 隐式注册事件 19
1.4 编译 21
1.4.1 编译目录 21
1.4.2 编译网站 24
1.4.3 生成程序集 25
1.4.4 定制程序集生成 26
1.4.5 Web Application Projects 27
1.5 总结 28
第2章 用户界面元素 30
2.1 网页模板 30
2.1.1 母版页 31
2.1.2 实现细节 34
2.1.3 使用母版页 37
2.1.4 使用细节 41
2.2 主题和皮肤 44
2.2.1 主题 45
2.2.2 使用主题 47
2.3 有关导航控件的基础知识 49
2.4 控件适配器 53
2.4.1 创建控件适配器 53
2.4.2 识别浏览器 59
2.4.3 CSS友好的适配器 60
2.5 总结 61
第3章 数据绑定 62
3.1 声明式数据绑定 63
3.1.1 数据绑定 63
3.1.2 数据源控件 65
3.1.3 存储连接字符串 77
3.1.4 数据源参数 77
3.1.5 新增的数据绑定控件 82
3.1.6 数据绑定计算语法 86
3.1.7 声明式数据绑定的技巧 87
3.1.8 层次型数据绑定 92
3.1.9 绑定到对象 98
3.1.10 类型化数据集 108
3.2 总结 109
第4章 状态管理 110
4.1 跨页传递 111
4.1.1 基本原理 111
4.1.2 实现 117
4.1.3 告诫 118
4.1.4 多源跨页传递 121
4.2 Wizard和MultiView控件 124
4.2.1 网页内的状态管理 124
4.2.2 Wizard控件 125
4.2.3 MultiView和View控件 128
4.3 配置文件 131
4.3.1 基本原理 131
4.3.2 迁移匿名配置文件数据 135
4.3.3 管理配置文件数据 135
4.3.4 存储配置文件数据 136
4.3.5 序列化 137
4.3.6 将用户定义的类型作为配置文件属性的类型 139
4.3.7 优化配置文件 141
4.3.8 走自定义之路 146
4.4 总结 147
第5章 安全性 148
5.1 需要多高的安全性 148
5.2 成员资格初步 149
5.3 提供程序架构 154
5.4 MembershipProvider 155
5.4.1 Login控件 158
5.4.2 用户账户锁定:福音还是祸根 159
5.4.3 密码复杂度策略 160
5.5 选择密码格式 161
5.6 密码问题和答案 162
5.7 配置成员资格提供程序 164
5.8 自定义提供程序 166
5.9 使用Membership类来访问提供程序 166
5.10 SQL数据库权限 167
5.11 LoginView和其他控件 169
5.12 角色管理器 171
5.13 配置角色管理器和提供程序 173
5.14 其他角色提供程序 174
5.15 机器密钥简介 175
5.16 无cookie表单认证 176
5.17 SiteMapProvider的安全修剪 177
5.18 配置文件加密 178
5.19 总结 180
第6章 Web部件 182
6.1 Web部件基本知识 182
6.1.1 门户组件 183
6.1.2 创建最简单的门户网页 184
6.1.3 显示模式 190
6.1.4 目录部件和区域 191
6.1.5 属性 194
6.1.6 编辑器部件和区域 198
6.1.7 谓词 200
6.1.8 连接 201
6.1.9 个性化范围 206
6.1.10 导入和导出Web部件 208
6.1.11 格式化Web部件和区域 212
6.1.12 将用户控件用作Web部件 214
6.1.13 个性化数据和提供程序 218
6.1.14 更换个性化数据存储方式 220
6.1.15 创建自定义的个性化提供程序 221
6.2 总结 226
第7章 诊断技术 228
7.1 运行状况监视和Web事件 228
7.2 Web事件层次结构 229
7.3 应监视哪些事件 231
7.4 内置的提供程序 231
7.4.1 E-mail提供程序 234
7.4.2 SQL提供程序 237
7.5 缓冲 237
7.6 注册事件 239
7.7 抑制和配置文件 241
7.8 运行状况监视配置节之间的关系 243
7.9 自定义Web事件 243
7.10 自定义提供程序 245
7.11 ASP.NET 2.0中的跟踪 249
7.11.1 以编程方式访问跟踪输出 250
7.11.2 同System.Diagnostics跟踪集成 251
7.11.3 将Web事件传递给将System.Diagnostics跟踪侦听器 255
7.12 Windows事件跟踪:不使用调试器的调试 255
7.13 总结 263
第8章 性能 264
8.1 缓存技术 264
8.1.1 数据源缓存 264
8.1.2 缓存依赖 268
8.1.3 以编程方式实现部分缓存 280
8.1.4 缓存后替换 282
8.1.5 缓存配置 284
8.1.6 全面的性能改善 286
8.2 客户端回调 286
8.2.1 客户端回调框架 286
8.2.2 按需填充TreeView的节点 290
8.2.3 Atlas 292
8.3 总结 293
第9章 异步 294
9.1 为何需要异步 294
9.1.1 利用并行性 295
9.1.2 缓解线程池争用 300
9.2 用于执行异步任务的技术 301
9.2.1 异步Web访问 301
9.2.2 AsyncOperationManager和异步Web服务调用 304
9.2.3 异步任务 305
9.2.4 相互依赖的异步任务 308
9.3 异步网页 310
9.3.1 Async="true" 311
9.3.2 减轻线程池的压力 311
9.3.3 AddOnPreRenderCompleteAsync 312
9.3.4 与线程相关的资源 313
9.4 总结 314