《ASP.NET 3.5高级程序设计(第2版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET 3.5的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。《ASP.NET 3.5高级程序设计》(第2版)还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外《ASP.NET 3.5高级程序设计》专门提供了两章的内容来教你如何用Ajax技术制作快速响应的页面,以及如何使用微软ASP.NET AJAX平台。另外,还介绍了微软的新一代RIA技术Silverlight 。《ASP.NET 3.5高级程序设计(第2版)》适用于各层次ASP.NET 3.5程序员。
第一部分 核心概念
第1章 ASP.NET简介
1.1 Web开发技术的演进
1.1.1 早期的Web开发
1.1.2 传统ASP的不足
1.1.3 ASP.NET
1.2 ASP.NET的7大要点
1.2.1 要点1:ASP.NET同.NETFramework集成在一起
1.2.2 要点2:ASP.NET是编译执行的,而不是解释执行的
1.2.3 要点3:ASP.NET具备多语言支持
1.2.4 要点4:ASP.NET运行在公共语言运行库内
1.2.5 要点5:ASP.NET是面向对象的
1.2.6 要点6:ASP.NET是跨设备和跨浏览器的
1.2.7 要点7:ASP.NET易于部署和配置
1.3 ASP.NET3.5:故事在继续
1.3.1 ASP.NET2.0
1.3.2 ASP.NET3.5
1.3.3 Silverlight
1.4 总结
第2章 VisualStudio
2.1 .NET开发模型
2.1.1 编译器
2.1.2 VisualStudio集成开发环境
2.1.3 网站和Web项目
2.1.4 创建无项目文件的网站
2.1.5 多目标
2.1.6 设计网页
2.2 VisualStudio集成开发环境
2.2.1 解决方案资源管理器
2.2.2 文档窗口
2.2.3 工具箱
2.2.4 错误列表和任务列表
2.2.5 服务器资源管理器
2.3 代码编辑器
2.3.1 添加程序集引用
2.3.2 智能感知和大纲显示
2.4 编码模型
2.4.1 代码隐藏文件如何与页面连接
2.4.2 控件标签如何与页面变量连接
2.4.3 事件如何与事件处理程序连接
2.5 Web项目
2.5.1 创建Web项目
2.5.2 迁移旧版VisualStudio创建的网站
2.6 VisualStudio调试
2.6.1 单步调试
2.6.2 变量监视
2.6.3 高级断点
2.7 VisualStudio宏
2.8 WebDevelopmentHelper
2.9 总结
第3章 Web窗体
3.1 页面处理
3.1.1 HTML表单
3.1.2 动态用户界面
3.1.3 ASP.NET事件模型
3.1.4 自动回送
3.1.5 视图状态
3.1.6 XHTML兼容性
3.2 Web窗体处理阶段
3.2.1 页面框架初始化
3.2.2 用户代码初始化
3.2.3 验证
3.2.4 事件处理
3.2.5 自动数据绑定
3.2.6 清除
3.2.7 页面流示例
3.3 作为控件容器的页面
3.3.1 显示控件树
3.3.2 页头
3.3.3 动态控件的创建
3.4 Page类
3.4.1 Session、Application和Cache
3.4.2 Request
3.4.3 Response
3.4.4 Server
3.4.5 User
3.4.6 Trace
3.4.7 访问其他类中的HTTP上下文
3.5 总结
第4章 服务器控件
4.1 服务器控件的类型
4.2 HTML服务器控件
4.2.1 HtmlControl类
4.2.2 HtmlContainerControl类
4.2.3 HtmlInputControl类
4.2.4 HTML服务器控件类
4.2.5 设置Style特性和其他属性
4.2.6 编程创建服务器控件
4.2.7 处理服务器端事件
4.3 Web控件
4.3.1 WebControl基类
4.3.2 基本的Web控件类
4.3.3 单位
4.3.4 枚举
4.3.5 颜色
4.3.6 字体
4.3.7 焦点
4.3.8 默认按钮
4.3.9 可滚动面板
4.3.10 处理Web控件事件
4.4 List控件
4.4.1 Selectable列表控件
4.4.2 BulletedList控件
4.5 输入验证控件
4.5.1 验证控件
4.5.2 验证流程
4.5.3 BaseValidator类
4.5.4 RequiredFieldValidator控件
4.5.5 RangeValidator控件
4.5.6 CompareValidator控件
4.5.7 RegularExpressionValidator控件
4.5.8 CustomValidator控件
4.5.9 ValidationSummary控件
4.5.10 通过编程使用验证器
4.5.11 验证组
4.6 富控件
4.6.1 AdRotator控件
4.6.2 Calendar控件
4.7 总结
第5章 ASP.NET应用程序
5.1 剖析ASP.NET应用程序
5.1.1 应用程序域
5.1.2 应用程序生命期
5.1.3 应用程序更新
5.1.4 应用程序目录结构
5.2 global.asax应用程序文件
5.2.1 应用程序事件
5.2.2 演示应用程序事件
5.3 ASP.NET配置
5.3.1 machine.config文件
5.3.2 web.config文件
5.3.3 system.web设置
5.3.4 通过编程读写配置节
5.3.5 网站管理工具(WAT)
5.3.6 扩展配置文件结构
5.3.7 加密配置节
5.4 .NET组件
5.4.1 创建组件
5.4.2 通过App_Code目录使用组件
5.4.3 通过Bin目录使用组件
5.5 扩展HTTP管道
5.5.1 HTTP处理程序和HTTP模块
5.5.2 创建自定义的HTTP处理程序
5.5.3 配置自定义的HTTP处理程序
5.5.4 不配置IIS 的HTTP注册处理程序
5.5.5 创建高级的HTTP处理程序
5.5.6 为非HTML内容创建HTTP处理程序
5.5.7 创建自定义HTTP模块
5.6 总结
第6章 状态管理
6.1 ASP.NET状态管理
6.2 视图状态
6.2.1 视图状态示例
6.2.2 在视图状态中保存对象
6.2.3 保持成员变量
6.2.4 视图状态评估
6.2.5 视图状态安全
6.3 在页面间传送信息
6.3.1 查询字符串
6.3.2 跨页面发送
6.4 cookie
6.5 会话状态
6.5.1 会话架构
6.5.2 使用会话状态
6.5.3 配置会话状态
6.5.4 会话状态安全
6.6 应用程序状态
6.7 总结
第二部分 数据访问
第7章 ADO.NET基础
7.1 ADO.NET架构
7.1.1 ADO.NET数据提供程序
7.1.2 ADO.NET的标准化
7.1.3 SQLServer2005
7.1.4 基本ADO.NET类
7.2 Connection类
7.2.1 连接字符串
7.2.2 测试连接
7.2.3 连接池
7.2.4 连接统计
7.3 Command类和DataReader类
7.3.1 Command基础
7.3.2 DataReader类
7.3.3 ExecuteReader()方法和DataReader
7.3.4 ExecuteScalar()方法
7.3.5 ExecuteNonQuery()方法
7.3.6 SQL注入攻击
7.3.7 使用参数化命令
7.3.8 调用存储过程
7.4 事务
7.4.1 事务和ASP.NET应用程序
7.4.2 隔离级别
7.4.3 保存点
7.5 提供程序无关的代码
7.5.1 创建工厂
7.5.2 用工厂创建对象
7.5.3 使用程序无关代码的查询
7.6 总结
第8章 数据组件和DataSet
8.1 构建数据访问组件
8.1.1 数据包
8.1.2 存储过程
8.1.3 数据应用类
8.1.4 测试数据库组件
8.2 非连接的数据
8.2.1 Web应用程序和DataSet
8.2.2 XML集成
8.3 DataSet类
8.4 DataAdapter类
8.4.1 填充DataSet
8.4.2 使用多个表和关系
8.4.3 查找特定行
8.4.4 在数据访问类里使用DataSet
8.4.5 数据绑定
8.5 DataView类
8.5.1 使用DataView排序
8.5.2 使用DataView过滤
8.5.3 使用关系的高级过滤
8.5.4 计算列
8.6 强类型DataSet
8.6.1 自定义TableAdapter
8.6.2 创建强类型数据集
8.6.3 深入强类型数据集
8.6.4 使用强类型数据集
8.7 总结
第9章 数据绑定
9.1 基本的数据绑定
9.1.1 单值绑定
9.1.2 其他类型的表达式
9.1.3 重复值绑定
9.2 数据源控件
9.3 SqlDataSource
9.3.1 选择记录
9.3.2 参数化命令
9.3.3 错误处理
9.3.4 更新记录
9.3.5 删除记录
9.3.6 插入记录
9.3.7 SqlDataSource的不足
9.4 ObjectDataSource
9.4.1 选择记录
9.4.2 更新记录
9.4.3 使用数据对象执行更新
9.5 数据源控件的限制
9.5.1 问题
9.5.2 添加其他项目
9.5.3 使用SqlDataSource处理其他选项
9.5.4 使用ObjectDataSource处理其他选项
9.6 总结
第10章 富数据控件
10.1 GridView
10.2 格式化GridView
10.2.1 格式化字段
10.2.2 样式
10.2.3 格式化特定值
10.3 GridView行选择
10.3.1 使用选择来创建主-从表单
10.3.2 SelectedIndexChanged事件
10.3.3 将数据字段用作选择按钮
10.4 对GridView排序
10.4.1 使用SqlDataSource排序
10.4.2 使用ObjectDataSource排序
10.4.3 排序和选择
10.4.4 高级排序
10.5 GridView分页
10.5.1 自动分页
10.5.2 ObjectDataSource的自定义分页
10.5.3 自定义分页栏
10.6 GridView模板
10.6.1 使用多个模板
10.6.2 在VisualStudio中编辑模板
10.6.3 绑定到方法
10.6.4 处理模板中的事件
10.6.5 使用模板编辑
10.7 ListView
10.7.1 分组
10.7.2 分页
10.8 DetailsView和FormView
10.8.1 DetailsView
10.8.2 FormView
10.9 高级网格
10.9.1 GridView中的汇总
10.9.2 单个表中的父/子视图
10.9.3 使用检查表编辑字段
10.9.4 处理来自数据库的图片
10.9.5 探测并发冲突
10.10 总结
第11章 缓存和异步页面
11.1 理解ASP.NET缓存
11.2 输出缓存
11.2.1 声明性的输出缓存
11.2.2 缓存和查询字符串
11.2.3 使用特定查询字符串参数的缓存
11.2.4 自定义缓存控制
11.2.5 使用HttpCachePolicy类进行缓存
11.2.6 缓存后替换和部分页缓存
11.2.7 缓存用户配置
11.2.8 缓存配置
11.3 数据缓存
11.3.1 向缓存添加项目
11.3.2 简单的缓存测试
11.3.3 缓存优先级
11.3.4 使用数据源控件的缓存
11.4 缓存依赖
11.4.1 文件和缓存项目依赖
11.4.2 聚合依赖
11.4.3 移除项目回调
11.4.4 理解SQL缓存通知
11.4.5 SQLServer2000和SQLServer7中的缓存通知
11.4.6 SQLServer2005和SQLServer2008中的缓存通知
11.5 自定义缓存依赖
11.5.1 基本的自定义缓存依赖
11.5.2 使用消息队列的自定义缓存依赖
11.6 异步页面
11.6.1 创建异步页面
11.6.2 在异步页面中查询数据
11.6.3 错误处理
11.6.4 在异步任务中使用缓存
11.6.5 多异步任务和超时
11.7 总结
第12章 文件和流
12.1 使用文件系统
12.1.1 Directory类和File类
12.1.2 DirectoryInfo类和FileInfo类
12.1.3 DriveInfo类
12.1.4 使用Attributes
12.1.5 使用通配符过滤文件
12.1.6 获取文件的版本信息
12.1.7 Path类
12.1.8 文件浏览器
12.2 使用流读写文件
12.2.1 文本文件
12.2.2 二进制文件
12.2.3 上传文件
12.2.4 使文件对多用户安全
12.2.5 压缩
12.3 序列化
12.4 总结
第13章 LINQ
13.1 LINQ基础
13.1.1 延迟执行
13.1.2 LINQ是如何工作的
13.1.3 LINQ表达式
13.1.4 揭秘LINQ表达式
13.2 LINQtoDataSet
13.2.1 强类型的DataSet
13.2.2 空值
13.3 LINQtoSQL
13.3.1 数据实体类
13.3.2 DataContext
13.3.3 揭秘LINQtoSQL查询
13.3.4 LINQtoSQL和数据库组件
13.3.5 选取单个记录或值
13.3.6 自动生成数据类
13.3.7 关系
13.3.8 为存储过程生成方法
13.3.9 提交变更
13.4 LinqDataSource
13.4.1 显示数据
13.4.2 获取关联数据
13.4.3 编辑数据
13.4.4 验证
13.5 总结
第14章 XML
14.1 什么时候使用XML
14.2 XML简介
14.2.1 XML的优点
14.2.2 格式良好的XML
14.2.3 XML命名空间
14.2.4 XML架构
14.3 基于流的XML处理
14.3.1 写XML文件
14.3.2 读XML文件
14.4 内存中的XML 处理
14.4.1 XmlDoument
14.4.2 XPathNavigator
14.4.3 XDocument
14.5 搜索XML内容
14.5.1 搜索XmlDocument
14.5.2 使用XPath搜索XmlDocument
14.5.3 使用LINQ搜索XDocument
14.6 验证XML内容
14.6.1 基本架构
14.6.2 验证XmlDocument
14.6.3 使用XDocument进行验证
14.7 转换XML内容
14.7.1 基本的样式表
14.7.2 使用XslCompiledTransform
14.7.3 使用Xml控件
14.7.4 使用LINQtoXML转换XML
14.8 XML数据绑定
14.8.1 非层次化绑定
14.8.2 使用XPath
14.8.3 嵌套的网格
14.8.4 使用TreeView的层次化绑定
14.8.5 使用XSLT
14.8.6 绑定到来自其他源的XML内容
14.8.7 通过XmlDataSource更新XML
14.9 XML和ADO.NET数据集
14.9.1 把DataSet转换为XML
14.9.2 把DataSet作为XML访问
14.10 总结
第三部分 构建ASP.NET网站
第15章 用户控件
15.1 用户控件基础
15.1.1 创建简单的用户控件
15.1.2 把页面转换成用户控件
15.2 为用户控件添加代码
15.2.1 处理事件
15.2.2 添加属性
15.2.3 使用自定义对象
15.2.4 添加事件
15.2.5 暴露内部Web控件
15.3 动态加载用户控件
15.4 缓存部分页面
15.4.1 VaryByControl
15.4.2 共享缓存控件
15.5 总结
第16章 主题和母版页
16.1 层叠样式表
16.1.1 创建CSS
16.1.2 应用样式表规则
16.2 主题
16.2.1 主题文件夹和外观
16.2.2 应用简单主题
16.2.3 处理主题冲突
16.2.4 为控件创建多个外观
16.2.5 含有模板和图片的外观
16.2.6 在主题里使用CSS
16.2.7 通过配置文件来应用主题
16.2.8 动态应用主题
16.3 标准化网站布局
16.4 母版页基础
16.4.1 简单的母版页
16.4.2 简单的内容页
16.4.3 默认内容
16.4.4 具有表格和CSS布局的母版页
16.4.5 母版页和相对路径
16.4.6 通过配置文件应用母版页
16.5 高级母版页
16.5.1 和母版页类交互
16.5.2 动态设置母版页
16.5.3 嵌套母版页
16.6 总结
第17章 网站导航
17.1 多视图页面
17.1.1 MultiView控件
17.1.2 Wizard控件
17.2 站点地图
17.2.1 定义站点地图
17.2.2 绑定站点地图
17.2.3 导航路径
17.2.4 显示站点地图的一部分
17.2.5 站点地图对象
17.2.6 加入自定义站点地图信息
17.2.7 创建自定义的SiteMapProvider
17.2.8 URL映射
17.2.9 安全调整
17.3 TreeView控件
17.3.1 TreeNode
17.3.2 按需填充结点
17.3.3 TreeView样式
17.4 Menu控件
17.4.1 Menu样式
17.4.2 Menu模板
17.5 总结
第18章 网站部署
18.1 IIS
18.1.1 IIS站点和虚拟目录
18.1.2 IIS管理控制台和IIS配置
18.1.3 将网址、虚拟目录和文件映射到URL
18.1.4 深入IIS架构
18.1.5 安装IIS
18.2 管理网站
18.2.1 管理虚拟目录以及使用IIS5.x和IIS6.0的网站
18.2.2 管理IIS6.0中的应用程序池
18.2.3 在IIS7.0里管理虚拟目录和站点
18.2.4 在IIS7.0里管理应用程序池
18.3 部署你的ASP.NET应用程序
18.3.1 在IIS5.x和IIS6.0上验证ASP.NET安装
18.3.2 在IIS5.x和IIS6.0上ASP.NET并行执行
18.3.3 在IIS7.0里的ASP.NET并行执行
18.3.4 在IIS5.x上部署时配置HTTP运行时设置
18.3.5 在ASP.NET中编译模型
18.3.6 使用VisualStudio进行部署
18.3.7 VisualStudio2005Web部署项目
18.4 ASP.NET中的VirtualPathProvider
18.5 ASP.NET里的健康监视
18.5.1 理解基本结构
18.5.2 事件和提供程序
18.6 总结
第四部分 安全
第19章 ASP.NET安全模型
19.1 何为创建安全软件
19.1.1 理解潜在的威胁
19.1.2 安全编程原则
19.1.3 理解Gatekeeper
19.2 理解安全级别
19.2.1 验证
19.2.2 授权
19.2.3 机密性和完整性
19.2.4 互相协作
19.3 IIS安全
19.3.1 IIS5.x和IIS6.0中的验证和授权
19.3.2 IIS7.0的安全配置
19.3.3 理解SSL
19.4 ASP.NET安全架构
19.4.1 验证
19.4.2 授权
19.4.3 安全上下文
19.4.4 成员资格和RolesAPI
19.5 总结
第20章 表单验证
20.1 表单验证介绍
20.1.1 为什么使用表单验证
20.1.2 为什么不使用表单验证
20.1.3 为什么不自己实现cookie验证
20.1.4 表单验证类
20.2 实现表单验证
20.2.1 配置表单验证
20.2.2 禁止匿名用户访问
20.2.3 创建自定义登录页面
20.2.4 自定义凭证存储
20.2.5 表单验证中的持久cookie
20.3 IIS7.0和表单验证
20.4 总结
第21章 成员资格
21.1 介绍ASP.NET的成员资格API
21.2 使用成员资格API
21.2.1 配置表单验证
21.2.2 创建数据存储
21.2.3 配置连接字符串和成员资格提供程序
21.2.4 创建并验证用户
21.3 使用安全控件
21.3.1 登录控件
21.3.2 登录状态控件
21.3.3 登录视图控件
21.3.4 恢复密码控件
21.3.5 修改密码控件
21.3.6 创建用户向导(CreateUserWizard)控件
21.4 在IIS7.0里配置成员资格
21.4.1 配置提供程序和用户
21.4.2 在其他应用程序里使用成员资格API
21.5 使用成员资格类
21.5.1 从存储中获得用户
21.5.2 更新存储中的用户
21.5.3 创建和删除用户
21.5.4 检验用户
21.5.5 在Windows窗体中使用成员资格
21.6 总结
第22章 Windows验证
22.1 介绍Windows验证
22.1.1 为什么使用Windows验证
22.1.2 为什么不使用Windows验证
22.1.3 Windows验证机制
22.2 实现Windows验证
22.2.1 配置IIS5.x和IIS6.0
22.2.2 配置IIS7.0
22.2.3 配置ASP.NET
22.2.4 禁止匿名用户访问
22.2.5 访问Windows用户信息
22.3 身份模拟
22.3.1 在Windows2000中执行身份模拟
22.3.2 在WindowsXP上面执行身份模拟
22.3.3 在WindowsServer2003上运行身份模拟和委托
22.3.4 WindowsVista上的身份模拟
22.3.5 在WindowsServer2008上的身份模拟和代理
22.3.6 经过配置的身份模拟
22.3.7 可编程的身份模拟
22.4 总结
第23章 授权和角色
23.1 URL授权
23.2 文件授权
23.3 在代码中检查授权
23.3.1 使用IsInRole()方法
23.3.2 使用PrincipalPermission类
23.4 为基于角色的授权使用角色服务
23.4.1 和角色一起使用LoginView控件
23.4.2 通过程序访问角色
23.4.3 在Windows验证中使用角色服务
23.5 在IIS5和IIS6中保护非网页资源
23.5.1 添加一个文件类型的映射
23.5.2 写一个自定义的HTTP处理程序
23.6 IIS7.0里的授权和角色
23.6.1 在IIS7.0里使用ASP.NET角色授权
23.6.2 在IIS7.0中管理ASP.NET角色
23.7 总结
第24章 用户配置
24.1 理解用户配置
24.1.1 用户配置的性能
24.1.2 用户配置如何存储数据
24.1.3 用户配置和验证
24.1.4 用户配置与自定义的数据组件
24.2 使用SqlProfileProvider
24.2.1 创建用户配置表
24.2.2 配置提供程序
24.2.3 定义用户配置属性
24.2.4 使用用户配置属性
24.2.5 用户配置序列化
24.2.6 用户配置组
24.2.7 用户配置和自定义的数据类型
24.2.8 用户配置API
24.2.9 匿名用户配置
24.3 自定义的用户配置提供程序
24.3.1 自定义的用户配置提供程序类
24.3.2 设计FactoredProfileProvider
24.3.3 编码实现FactoredProfile-Provider
24.3.4 测试FactoredProfileProvider
24.4 总结
第25章 加密
25.1 加密数据:机密性问题
25.2 .NET加密命名空间
25.3 理解.NET加密类
25.3.1 对称加密算法
25.3.2 非对称加密
25.3.3 抽象加密类
25.3.4 ICryptoTransform接口
25.3.5 CryptoStream类
25.4 加密敏感数据
25.4.1 管理秘密信息
25.4.2 使用对称算法
25.4.3 使用非对称算法
25.4.4 加密数据库中的敏感数据
25.5 加密查询字符串
25.5.1 包装查询字符串
25.5.2 创建一个测试页面
25.6 总结
第26章 自定义成员资格提供程序
26.1 自定义提供程序的架构
26.2 创建自定义提供程序的基本步骤
26.2.1 自定义提供程序的总体设计
26.2.2 设计并实现自定义存储机制
26.2.3 实现提供程序类
26.2.4 使用自定义提供程序类
26.3 总结
第五部分 高级用户界面
第27章 自定义服务器控件
27.1 自定义服务器控件入门
27.1.1 创建简单的自定义控件
27.1.2 使用自定义控件
27.1.3 工具箱中的自定义控件
27.1.4 创建一个支持样式属性的Web控件
27.1.5 呈现过程
27.2 处理不同的浏览器
27.2.1 HtmlTextWriter
27.2.2 浏览器检测
27.2.3 浏览器属性
27.2.4 覆盖浏览器类型侦测
27.2.5 自适应呈现
27.3 控件状态和事件
27.3.1 视图状态
27.3.2 控件状态
27.3.3 回传数据和change事件
27.3.4 触发回传
27.4 扩展现有的Web控件
27.4.1 组合控件
27.4.2 派生控件
27.5 模板化控件
27.5.1 创建模板化控件
27.5.2 使用定制的模板
27.5.3 样式
27.6 总结
第28章 设计时支持
28.1 主要成员
28.2 设计时特性
28.2.1 Properties窗口
28.2.2 特性与继承
28.2.3 工具箱图标
28.3 Web资源
28.3.1 创建资源
28.3.2 获取资源
28.3.3 文本替换
28.4 代码序列化
28.4.1 类型转换器
28.4.2 序列化特性
28.4.3 类型编辑器
28.5 控件设计器
28.5.1 设计时HTML
28.5.2 智能标签
28.6 总结
第29章 动态图形和GDI+
29.1 ImageMap控件
29.1.1 创建热点
29.1.2 处理热点单击
29.1.3 自定义热点
29.2 使用GDI+画图
29.2.1 简单绘制
29.2.2 图像格式和质量
29.2.3 Graphics类
29.2.4 使用GraphicsPath
29.2.5 画笔
29.2.6 画刷
29.3 在网页上嵌入动态图形
29.3.1 使用PNG格式
29.3.2 传递信息给动态图像
29.3.3 使用GDI+的自定义控件
29.4 用GDI+绘制图表
29.5 总结
第30章 使用Web部件页面的门户
30.1 典型门户页面
30.2 初级Web部件页面
30.2.1 创建页面设计
30.2.2 WebPartManager和WebPartZone
30.2.3 向页面添加Web部件
30.2.4 定制页面
30.3 创建Web部件
30.3.1 简单的Web部件任务
30.3.2 开发高级Web部件
30.3.3 Web部件编辑器
30.3.4 连接Web部件
30.3.5 自定义动词和Web部件
30.3.6 用户控件和高级Web部件
30.3.7 动态上传Web部件
30.3.8 针对Web部件的授权
30.3.9 个性化的最后任务
30.4 总结
第六部分 客户端程序设计
第31章 JavaScript和Ajax技术
31.1 JavaScript本质
31.1.1 HTML文档对象模型
31.1.2 客户端事件
31.1.3 脚本块
31.1.4 操纵HTML元素
31.1.5 调试JavaScript
31.2 基本JavaScript示例
31.2.1 创建JavaScript页面处理器
31.2.2 使用JavaScript异步下载图片
31.2.3 呈现脚本块
31.3 脚本注入攻击
31.3.1 请求验证
31.3.2 禁用请求验证
31.4 带有JavaScript的自定义控件
31.4.1 弹出窗口
31.4.2 滚动按钮
31.5 框架
31.5.1 框架导航
31.5.2 内联框架
31.6 理解Ajax
31.6.1 XMLHttpRequest对象
31.6.2 Ajax示例
31.7 在客户端回调中使用Ajax
31.7.1 创建客户端回调
31.7.2 深入了解客户端回调
31.7.3 自定义控件里的客户端回调
31.8 总结
第32章 ASP.NETAJAX
32.1 介绍ASP.NETAJAX
32.1.1 客户端的ASP.NETAJAX:脚本库
32.1.2 服务器端的ASP.NETAJAX:ScriptManager
32.2 服务器回调
32.2.1 ASP.NETAJAX中的Web服务
32.2.2 Web服务代理
32.2.3 在页面里放置Web方法
32.2.4 ASP.NETAJAX应用程序服务
32.3 ASP.NETAJAX服务器控件
32.3.1 使用UpdatePanel的局部呈现
32.3.2 使用Timer的定时刷新
32.3.3 使用UpdateProgress的长时间更新
32.4 深入客户端库
32.4.1 理解客户端模型
32.4.2 JavaScript的面向对象编程
32.4.3 Web-Page框架
32.5 控件扩展器
32.5.1 安装ASP.NETAJAX控件工具包
32.5.2 AutoCompleteExtender
32.5.3 ASP.NETAJAX控件工具包
32.6 总结
第33章 Silverlight
33.1 理解Silverlight
33.1.1 Silverlight与Flash
33.1.2 应用Silverlight
33.1.3 Silverlight和WPF
33.1.4 安装Silverlight和VisualStudio扩展
33.2 创建Silverlight项目
33.2.1 HTML入口页面
33.2.2 Silverlight初始化脚本
33.2.3 XAML页面
33.2.4 XAML代码隐藏页
33.2.5 属性和事件
33.2.6 编译Silverlight
33.3 Silverlight本质
33.3.1 Silverlight中的.NETFramework类
33.3.2 Canvas
33.3.3 文本
33.3.4 和HTML交互
33.3.5 隔离存储
33.4 Silverlight和ASP.NET
33.4.1 ASP.NETFutures
33.4.2 Silverlight和ASP.NET之间的通信
33.5 绘制二维图形
33.5.1 简单形状
33.5.2 路径和几何图形
33.5.3 刷子
33.5.4 透明度
33.6 动画
33.6.1 动画基础
33.6.2 定义动画
33.6.3 交互性动画示例
33.6.4 变换
33.7 总结