ASP.NET 3.5高级程序设计
2008-11
麦克唐纳 (Matthew MacDonald)、兹普兹塔 (Mario Szpuszta)、 博思工作室 人民邮电出版社 (2008-11出版)
(美)麦克唐纳(MatthewMacDonald),兹普兹塔
1194
博思工作室
无
随着2001年.NET技术的正式发布,微软正式拉开了下一代开发技术的序幕。.NET技术一经问世,就势不可挡地统治了整个Windows平台的开发领域。.NET技术横跨桌面应用开发、Web应用程序开发和嵌入式开发的各个领域,并提供了一个统一高效的集成开发环境Visual Studio。在2007年11月,微软正式发布了Visual Studio 2008以及ASENET 3.5版本,这是一个更加重要的升级和里程碑版本。Visual Studio 2008允许你构建针对多个.NET Framework版本的应用。这意味着你可以使用VisualStudio 2008打开、编辑和编译现有的.NET 2.0和ASP.NET 2.0应用(包括使用了ASP.NET AJAX 1.0的ASP.NET 2.0应用),继续在.NET 2.0机器上部署这些应用。ASP.NET AJAX已经成为.NET 3.5的一部分,不再需要单独下载了。除了包括ASENET AJAx 1.0的所有功能外,ASP.NET 3.5现在还包括下面这些丰富的支持:集成了WebParts的UpdatePanel,与和等控件的ASENETAJAX集成,WCF对JSON的支持,以及许许多多AJAx方面的改进。LiNQ to SQL是.NET 3.5中内置的对象关系映射(ORM)。它允许你使用.NET对象模型对关系数据库进行建模。然后你可以使用LINO对数据库进行查询,并能更新、插入和删除数据。LINQ to SQL完全支持事务、视图和存储过程。它还提供了一个简易方式把业务逻辑和验证规则结合进你的数据模型。ASP.NET 3.5还有更多激动人心的功能,在此我们不一一描述了,相信随着不断深入了解ASP.NET3.5,你将会愈发喜欢ASENET 3.5这个版本的各种重要更新以及强大的新功能。本书尝试对最新的ASENET 3.5技术做一个较为全面的阐述,由于时间仓促,难免有翻译欠妥之处,希望读者能谅解。
《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程序员。
作者:(美国)麦克唐纳 (Matthew MacDonald) (美国)兹普兹塔 (Mario Szpuszta) 译者:博思工作室作者简介:Matthew MacDonald世界顶尖的微软技术专家,微软MVP。他是Inside Visual Basic、ASPToday、Hardcore sual Studio.NE丁等著名软件开发杂志的特约作者,还写作了多部脍炙人口的编程畅销书。本书为其代表作。Mario Szpuszta微软奥地利开发者和平台组架构师。有丰富的Web应用和安全软件开发和集成经验。他也是社区内非常活跃的技术专家。经常在各种顶级技术会议中发表演讲。除《ASP.NET 3.5高级程序设计》外。他还是名著Advanced.NET Remoting的作者。译者简介:苏红超,网名Uestc95,喜好.NET技术,曾著有《ASENET深入解析》(科学出版社,2003),并于2004/2005/2006/2007连续4年荣获微软MVP,目前主要从事超大规模Web应用研究以及Web安全研冤。E-mail/MSN:uestc95@gmail.com朱琦,资深.NET开发人员,企业顾问,主持研发数个大型企业级软件产品,目前就职于明基研发中心。E-mail/MSN:miraculeux@gmail.com
第一部分 核心概念第1章 ASP.NET简介1.1 Web开发技术的演进1.1.1 早期的Web开发1.1.2 传统ASP的不足1.1.3 ASP.NET1.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.01.3.2 ASP.NET3.51.3.3 Silverlight1.4 总结第2章 VisualStudio2.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 WebDevelopmentHelper2.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和Cache3.4.2 Request3.4.3 Response3.4.4 Server3.4.5 User3.4.6 Trace3.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 cookie6.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 SQLServer20057.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()方法和DataReader7.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章 数据组件和DataSet8.1 构建数据访问组件8.1.1 数据包8.1.2 存储过程8.1.3 数据应用类8.1.4 测试数据库组件8.2 非连接的数据8.2.1 Web应用程序和DataSet8.2.2 XML集成8.3 DataSet类8.4 DataAdapter类8.4.1 填充DataSet8.4.2 使用多个表和关系8.4.3 查找特定行8.4.4 在数据访问类里使用DataSet8.4.5 数据绑定8.5 DataView类8.5.1 使用DataView排序8.5.2 使用DataView过滤8.5.3 使用关系的高级过滤8.5.4 计算列8.6 强类型DataSet8.6.1 自定义TableAdapter8.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 SqlDataSource9.3.1 选择记录9.3.2 参数化命令9.3.3 错误处理9.3.4 更新记录9.3.5 删除记录9.3.6 插入记录9.3.7 SqlDataSource的不足9.4 ObjectDataSource9.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 GridView10.2 格式化GridView10.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 ListView10.7.1 分组10.7.2 分页10.8 DetailsView和FormView10.8.1 DetailsView10.8.2 FormView10.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 使用Attributes12.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章 LINQ13.1 LINQ基础13.1.1 延迟执行13.1.2 LINQ是如何工作的13.1.3 LINQ表达式13.1.4 揭秘LINQ表达式13.2 LINQtoDataSet13.2.1 强类型的DataSet13.2.2 空值13.3 LINQtoSQL13.3.1 数据实体类13.3.2 DataContext13.3.3 揭秘LINQtoSQL查询13.3.4 LINQtoSQL和数据库组件13.3.5 选取单个记录或值13.3.6 自动生成数据类13.3.7 关系13.3.8 为存储过程生成方法13.3.9 提交变更13.4 LinqDataSource13.4.1 显示数据13.4.2 获取关联数据13.4.3 编辑数据13.4.4 验证13.5 总结第14章 XML14.1 什么时候使用XML14.2 XML简介14.2.1 XML的优点14.2.2 格式良好的XML14.2.3 XML命名空间14.2.4 XML架构14.3 基于流的XML处理14.3.1 写XML文件14.3.2 读XML文件14.4 内存中的XML 处理14.4.1 XmlDoument14.4.2 XPathNavigator14.4.3 XDocument14.5 搜索XML内容14.5.1 搜索XmlDocument14.5.2 使用XPath搜索XmlDocument14.5.3 使用LINQ搜索XDocument14.6 验证XML内容14.6.1 基本架构14.6.2 验证XmlDocument14.6.3 使用XDocument进行验证14.7 转换XML内容14.7.1 基本的样式表14.7.2 使用XslCompiledTransform14.7.3 使用Xml控件14.7.4 使用LINQtoXML转换XML14.8 XML数据绑定14.8.1 非层次化绑定14.8.2 使用XPath14.8.3 嵌套的网格14.8.4 使用TreeView的层次化绑定14.8.5 使用XSLT14.8.6 绑定到来自其他源的XML内容14.8.7 通过XmlDataSource更新XML14.9 XML和ADO.NET数据集14.9.1 把DataSet转换为XML14.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 VaryByControl15.4.2 共享缓存控件15.5 总结第16章 主题和母版页16.1 层叠样式表16.1.1 创建CSS16.1.2 应用样式表规则16.2 主题16.2.1 主题文件夹和外观16.2.2 应用简单主题16.2.3 处理主题冲突16.2.4 为控件创建多个外观16.2.5 含有模板和图片的外观16.2.6 在主题里使用CSS16.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 创建自定义的SiteMapProvider17.2.8 URL映射17.2.9 安全调整17.3 TreeView控件17.3.1 TreeNode17.3.2 按需填充结点17.3.3 TreeView样式17.4 Menu控件17.4.1 Menu样式17.4.2 Menu模板17.5 总结第18章 网站部署18.1 IIS18.1.1 IIS站点和虚拟目录18.1.2 IIS管理控制台和IIS配置18.1.3 将网址、虚拟目录和文件映射到URL18.1.4 深入IIS架构18.1.5 安装IIS18.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中的VirtualPathProvider18.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 理解Gatekeeper19.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 理解SSL19.4 ASP.NET安全架构19.4.1 验证19.4.2 授权19.4.3 安全上下文19.4.4 成员资格和RolesAPI19.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 表单验证中的持久cookie20.3 IIS7.0和表单验证20.4 总结第21章 成员资格21.1 介绍ASP.NET的成员资格API21.2 使用成员资格API21.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 在其他应用程序里使用成员资格API21.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.022.2.2 配置IIS7.022.2.3 配置ASP.NET22.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 使用SqlProfileProvider24.2.1 创建用户配置表24.2.2 配置提供程序24.2.3 定义用户配置属性24.2.4 使用用户配置属性24.2.5 用户配置序列化24.2.6 用户配置组24.2.7 用户配置和自定义的数据类型24.2.8 用户配置API24.2.9 匿名用户配置24.3 自定义的用户配置提供程序24.3.1 自定义的用户配置提供程序类24.3.2 设计FactoredProfileProvider24.3.3 编码实现FactoredProfile-Provider24.3.4 测试FactoredProfileProvider24.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 HtmlTextWriter27.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 设计时HTML28.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 使用GraphicsPath29.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和WebPartZone30.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 调试JavaScript31.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 理解Ajax31.6.1 XMLHttpRequest对象31.6.2 Ajax示例31.7 在客户端回调中使用Ajax31.7.1 创建客户端回调31.7.2 深入了解客户端回调31.7.3 自定义控件里的客户端回调31.8 总结第32章 ASP.NETAJAX32.1 介绍ASP.NETAJAX32.1.1 客户端的ASP.NETAJAX:脚本库32.1.2 服务器端的ASP.NETAJAX:ScriptManager32.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 AutoCompleteExtender32.5.3 ASP.NETAJAX控件工具包32.6 总结第33章 Silverlight33.1 理解Silverlight33.1.1 Silverlight与Flash33.1.2 应用Silverlight33.1.3 Silverlight和WPF33.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 编译Silverlight33.3 Silverlight本质33.3.1 Silverlight中的.NETFramework类33.3.2 Canvas33.3.3 文本33.3.4 和HTML交互33.3.5 隔离存储33.4 Silverlight和ASP.NET33.4.1 ASP.NETFutures33.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 总结
插图:
“对于想真正精通ASP.NET的人,我强烈推荐本书。它远远超出了同类图书,绝不避重就轻。讨论了如何解决许多常见的难题。” --David}tayden。Microsoft MVP,资深Web软件工程师“ASP.NET工程师的必读之作!不仅是绝佳的学习教程,也是不可或缺的参考手册。” --.NET-Developer’S Journal
《ASP.NET 3.5高级程序设计(第2版)》是ASP.NET经典著作之屠龙刀,涵盖VS 2008和IIS 7.0,全面、深入、贴近实战,让你感受世界顶尖专家的不凡功力,国内MVP担纲翻译,名著名译,相得益彰。ASP.NET 3.5堪称微软Web开发技术的里程碑。它不仅完善了ASP.NET 2.O的各项功能,还添加了几个极具创新性的特性LINQ、ASP.NET A.JAX和Silverligtlt,使微软在风云变幻的Web技术领域依然能够笑傲群雄。《ASP.NET 3.5高级程序设计(第2版)》是ASP.NET领域公认经典名著的中文版。原书出自两位世界顶级技术专家之手。《ASP.NET 3.5高级程序设计》中不仅清晰透彻而且恰到好处地讲述了ASP.NET的基础知识。更深入内幕,剖析了ASP NET的内部机理,使你知其然,更知其所以然。对于系统所提供的各种特性,都客观地解释其优缺点,使读者能够根据具体情况做出明智选择。更为难能可贵的是。作者直面许多实战中困难的主题,给出了优雅的解决方案。所附C#实例设计精心,极富指导意义,可以很容易地应用于实际项目。
无
vs2008的详解,对.NETFomeWord
内容相当全面且有深度,只是纸张不是很好。
学习的必备书籍.
一时没时间看不过看了下标题,感觉就是拿来当工具书用
但是很多3.5的特性都没有
书内容是不错,但是装订不太好,不几天就开线了。
这本书不是不错的,内容很全面,而且讲到了关键技术!但我觉得初学都不太适合!
很好!内容全面,讲解细致,实例也很详细,强烈推荐!
适合有一定开发经验的asp.net程序员
这书很不错,也很厚。有空要好好看看,学习学习
个人觉得这书是ASP.NET方面是最好的!
昨天买的,今天上午就拿到书了,速度很快!
该书对于ASP.NET进行了详细的讲解.很不错,不管是作为工具书还是学习书,都是不错的.
现在看到第五章了,感觉读的有些慢。此书不错,内容很全,讲的也细。对学习ASP。NET 很有帮助。-
读了400多页,看到数据库那边,感觉讲的很细,不过我觉得学这个应该边做网站边学习,要不很枯燥