ASP.NET MVC 4实战.pdf

ASP.NET MVC 4实战.pdf
 

书籍描述

内容简介
  《ASP.NET MVC 4实战》讲解深入到ASP.NET MVC开发内部,可作为在.NET平台上开发Web应用程序的程序员的一本很好的指南。
  《ASP.NET MVC 4实战》分为3部分,共24章。第1部分(第1~4章)介绍ASP.NET MVC框架,通过创建一个简单的留言簿应用程序,解释该框架的核心概念。第2部分(第5~15章)涉及几个在使用ASP.NET MVC时需要理解的重要的主题,包括验证、Ajax、安全性和路由,并用一些具体示例以阐述这些概念。此外,这部分还讲解了一些编程技巧,例如,如何构建视图专用模型和轻量控制器。最后讲解了如何在MVC应用程序中利用第三方的NHibernate项目进行数据访问。第3部分(第16~24章)探讨了几个高级主题,主要侧重于框架的可扩展点,包括如何扩展控制器、如何使用依赖性注入,以及如何扩展区域以使得它们易于可重新分发。第23章和第24章涉及移动布局和Web API,这些是以前的ASP.NET MVC版本不能向后兼容的特性。
  《ASP.NET MVC 4实战》适合希望采用ASP.NET MVC技术从事Web应用程序开发的人员阅读,也可作为大专院校教授ASP.NET MVC开发技术的教材,也可供从事软件设计与开发的相关技术人员参考。

编辑推荐
展示如何高效运用ASP.NET MVC的实用指南
全新版本,丰富示例,
全面讲解开发主题,新的Web API和完整的系统测试
ASP.NET MVP及ASP专家写作,拥有丰富的实际工作经验,也是ASP.NET MVC的最早用户

媒体推荐
“指导读者深入学习ASP.NET MVC的内部工作机制”
——Phil Haack(GitHub公司)

“一本为伟大框架而著的充满实用价值的书籍”
——Jonas Bandi,TechTalk公司

“一本完整指南,并涵盖了开源工具”
——ApostolosMavroudakis,UBS AG公司

“优秀图书系列中的又一个成员。”
——Paul Stack,Toptable.com

“为务实的从业人员而著的Web应用架构开发图书”
——Arun Noronha,Guardian Protection Services公司

作者简介
Jeffrey Palermo是两个孩子(Gwyneth Rose和Xander)的爸爸,也是一个幸运的丈夫。在空余时间,他喜欢笨拙地弹奏吉他和学习有关业务。在业务领域,他是以Austin(奥斯汀,得克萨斯州府)为基地的软件咨询公司Headspring的总裁兼COO(首席运营官)。Jeffrey领导了Headspring咨询业务的成长―从一个小型的开发公司成长为一个数百万美元的软件定制公司。认识到软件历史、趋势、潮流和持续摇摆就是技术产业,Jeffrey一直在寻求一种更好的构建软件方式―他能够在其中使用新的技术而又不失过去的优势。他常常忽视产业潮流,而倡导适度、简单的办法。Jeffrey自2006年起便被微软认定为MVP。他在很多业界会议,如VSLive、DevTeach、微软MVP峰会,各种ALT.NET会议,以及Microsoft Tech Ed上做过演讲或起过推动作用。他也曾作为INETA演讲者协会(INETA Speakers’Bureau)的成员,为全国的用户组做过演讲。他毕业于Texas A&M大学,是老鹰童子军奖章获得者、伊拉克战争老兵,目前正在Jack Welch管理学院学习MBA课程。
Jeffrey Palermo还负责流行的“Palermo聚会”(作者发起的聚会―译者注)活动,该活动往往安排在以微软技术为主题的会议前夕。“Palermo聚会”始于2005年6月,已经越来越流行,参与人数也越来越多。每次活动一般都有数百人参加,提供免费的饮料、美食和抽奖。这是在会议开始前一周联络朋友和同事的最佳方式。你可以在http://partywithpalermo.com看到已举办和即将举办的聚会。该网站自2007年10月便运行在ASP.NET MVC上。
最后,Jeffrey和Eric Hexter一起创立了MvcContrib开源项目。如今,该项目可以在微软CodePlex基金会的主页上找到,它是其非盈利软件库中被接纳的第一个非软件项目。
Jimmy Bogard是Headspring的一位技术架构师。他是一位具有6年专业开发经验的Agile软件开发人员。他为许多客户提供从概念到产品的系统解决方案,这些方案涵盖了小型产品到财富百强的企业级电子商务应用。他还是一位MCAD(Microsoft Certified Application Developer,微软认证的应用程序开发专家),也是.NET社区的一位活跃的成员,领导着开源项目,提供技术陈述,并促进图书俱乐部。
目前,Jimmy是NBehave项目(一个.NET的行为驱动开发框架)和AutoMapper(一个基于约定的“对象-对象”映射器)的首席开发人员,他是Austin Domain-Driven Design Book Club(Austin域驱动设计图书俱乐部)的主持人。Jimmy是ASPInsiders和C# Insiders小组的成员,并于2009年获得ASP.NET的“MVP奖”。
Eric Hexter从事专业软件开发15年以上,内容涉及咨询、产品开发、企业IT、高级品牌的Web网站和电子商务。他是Agile项目管理和软件工程实践的积极倡导者。Eric深知编写不可测试、紧耦合代码的艰难。事实上,使用软件方面的说法,这种类型的代码通常只能放在同一种场所,无法修改和适应不断变化的业务需求。
Eric在Austin开发社区非常活跃。他是Austin的.NET用户组(Austin.NET Users Group)的主管。自2007年起,他就举办了Austin代码营(Austin Code Camp),这是一个为期一天的开发人员会议。除了Austin的.NET用户组的任职以外,Eric还曾担任过以下职位:南得克萨斯州INETA成员导师、ASP-Insider(ASP权威人士)、微软ASP.NET的MVP,以及MVC虚拟用户组社区的创始人。Eric和Javier Lazano共同创立了MVC社区,这是一个专注于ASP.NET MVC的虚拟用户组。Eric还与人合作创立了MVCConf,这是一个为期一天的大型在线ASP.NET MVC会议(mvcconf.com)。他在Los Techies(一个社区主导型的技术博客社区)上开设了博客,并在得克萨斯和美国各地的技术会议上为用户组发表演讲。
Eric受到很多人的妒忌,因为他有一位美丽的妻子(Chriss)和三个可爱的女儿(Emerso、Elliott和Everlee)。他用尽可能多的时间与家人在一起。
Matt Hinze是一位来自得克萨斯奥斯汀的程序员和软件设计人员。自2005年起,他已成功地向软件开发人员开设了多门技术课程。他也是工作在主要软件项目战壕中的一位全职开发人员。Matt是一位ASP权威人士和微软C#的MVP。他就职于Round Rock一家大型电子商务实现公司Sogeti,并与他的妻子和儿子生活在奥斯汀北郊。
Jeremy Skinner是一位英国籍软件开发人员,主要擅长ASP.NET MVC和C#的Web应用程序开发。他参与了多个开源项目,包括MvcContrib和FluentValidation,还是微软ASPInsiders小组的成员。可以在http://www.jeremyskinner.co.uk上看到他的博客。

目录
目 录

第1部分 快速基础

第1章 绪论 2
1.1 发展阶段 2
1.1.1 .NET平台 2
1.1.2 ASP.NET Web Form 3
1.2 ASP.NET MVC是什么 4
1.2.1 MVC模式 5
1.2.2 ASP.NET MVC的好处 5
1.3 ASP.NET MVC 3/4的新特性 6
1.3.1 Razor视图引擎 6
1.3.2 NuGet包管理 7
1.3.3 改进的可扩展性 7
1.3.4 全局动作过滤器 7
1.3.5 动态语言特性 8
1.3.6 部分页面输出缓存 8
1.3.7 Ajax改进 8
1.3.8 验证改进 8
1.4 小结 8

第2章 第一个MVC应用程序 9
2.1 设置开发环境 9
2.2 创建第一个MVC应用程序 11
2.2.1 创建新项目 11
2.2.2 漫游默认项目模板(的结构) 13
2.2.3 控制器、动作,以及显示动态内容 14
2.3 Guestbook示例应用程序 18
2.3.1 创建数据库 18
2.3.2 添加模型 20
2.3.3 接受留言簿条目 24
2.3.4 显示留言簿条目 27
2.3.5 用布局定制外观 29
2.4 小结 31

第3章 视图基础 32
3.1 视图简介 32
3.1.1 选择待渲染视图 32
3.1.2 重写视图名 33
3.2 给视图传递数据 33
3.2.1 ViewDataDictionary 34
3.2.2 ViewBag 35
3.2.3 带有视图模型的强类型视图 36
3.2.4 在视图中显示视图模型数据 37
3.3 使用强类型模板 41
3.3.1 EditorFor和DisplayFor模板 41
3.3.2 内建模板 43
3.3.3 选择模板 44
3.3.4 定制模板 46
3.4 小结 49

第4章 充满动作的控制器 50
4.1 考察控制器和动作 50
4.1.1 IController与控制器基类 51
4.1.2 如何形成动作方法 52
4.2 哪些应该放在动作方法中 54
4.2.1 手动映射视图模型 54
4.2.2 输入验证 56
4.3 单元测试介绍 58
4.3.1 使用已提供的测试项目 59
4.3.2 测试GuestbookController 60
4.4 小结 65

第2部分 使用ASP.NET MVC

第5章 视图模型 67
5.1 什么是视图模型 67
5.1.1 在线商店示例 68
5.1.2 建立视图模型 69
5.1.3 交付表现模型 69
5.1.4 ViewData.Model 70
5.2 表现用户输入 71
5.2.1 设计(输入)模型 71
5.2.2 在视图中表示输入模型 72
5.2.3 使用提交的输入 73
5.3 用于显示和输入的复杂模型 74
5.3.1 设计显示和输入的组合模型 74
5.3.2 使用输入模型 74
5.4 小结 75

第6章 验证 76
6.1 服务器端验证 76
6.1.1 Data Annotations验证 76
6.1.2 扩展ModelMetadataProvider 79
6.2 客户端验证 81
6.2.1 客户端验证初步 82
6.2.2 使用RemoteAttribute 83
6.2.3 创建自定义客户端验证器 84
6.3 小结 86

第7章 ASP.NET MVC中的Ajax 87
7.1 使用jQuery的Ajax 87
7.1.1 jQuery初步 88
7.1.2 使用jQuery形成Ajax请求 89
7.1.3 渐进式增强 91
7.1.4 使用Ajax提交表单数据 93
7.2 ASP.NET MVC的Ajax辅助器 95
7.2.1 Ajax.ActionLink 97
7.2.2 Ajax.BeginForm 98
7.2.3 Ajax选项 99
7.2.4 与ASP.NET MVC早期版本的差别 99
7.3 使用JSON和客户端模板的Ajax 100
7.3.1 使用JSON的Ajax 100
7.3.2 客户端模板 104
7.3.3 最后润色 106
7.4 创建自动完成的文本框 108
7.5 小结 112

第8章 安全性 113
8.1 认证与授权 113
8.1.1 以AuthorizeAttribute限制访问 113
8.1.2 AuthorizeAttribute的工作机制 115
8.2 跨网站脚本攻击(XSS) 116
8.2.1 动作中的XSS 117
8.2.2 避免XSS漏洞 118
8.3 跨网站请求伪造(XSRF) 120
8.3.1 XSRF的运作 120
8.3.2 防止XSRF 121
8.3.3 JSON劫持 122
8.4 小结 125

第9章 以路由控制URL 126
9.1 介绍URL路由 126
9.1.1 默认路由 126
9.1.2 入站与出站路由 128
9.2 设计URL方案 129
9.2.1 建立简单、整洁的URL 129
9.2.2 建立可破解的URL 130
9.2.3 使用URL参数区分请求 130
9.2.4 尽可能避免暴露数据库ID 131
9.2.5 考虑添加多余信息 131
9.3 在ASP.NET MVC中实现路由 133
9.3.1 在线商店的URL方案 133
9.3.2 添加自定义静态路由 134
9.3.3 添加自定义的动态路由 134
9.3.4 全匹配路由 137
9.4 使用路由系统生成URL 138
9.5 ASP.NET Web Form的路由 139
9.5.1 添加Web Form页面的路由 140
9.5.2 通过Web Form页面生成URL 142
9.6 调试路由 143
9.6.1 安装Route Debugger 143
9.6.2 使用Route Debugger 144
9.6.3 使用路由约束 145
9.7 测试路由行为 147
9.7.1 测试入站路由 147
9.7.2 测试出站路由 151
9.8 小结 152

第10章 模型绑定器与值提供器 153
10.1 创建自定义模型绑定器 153
10.2 使用自定义值提供器 158
10.3 小结 164

第11章 利用AutoMapper进行映射 165
11.1 AutoMapper之前的生活 165
11.2 AutoMapper介绍 168
11.2.1 映射匹配的属性名字 168
11.2.2 平整对象层次 168
11.3 AutoMapper基础 169
11.3.1 AutoMapper初始化 169
11.3.2 AutoMapper简档 170
11.3.3 健全性检查 170
11.3.4 减少重复的格式化代码 171
11.3.5 另一种视图 173
11.4 小结 173

第12章 轻量级控制器 174
12.1 控制器为何要轻量级 174
12.1.1 易于维护 174
12.1.2 易于测试 175
12.1.3 聚焦的职责 175
12.2 简化控制器的技术 177
12.2.1 管理常用视图数据 177
12.2.2 派生动作结果 180
12.2.3 使用应用程序总线 182
12.3 小结 185

第13章 利用区域进行组织 186
13.1 创建一个基本的区域 186
13.2 用T4MVC管理链接和URL 191
13.3 小结 193

第14章 第三方组件 194
14.1 学习NuGet 194
14.1.1 更新包 195
14.1.2 理解NuGet基础 195
14.2 使用ASP.NET的Web辅助器 196
14.3 MvcContrib Grid组件 198
14.3.1 使用MvcContrib Grid 198
14.3.2 MvcContrib Grid高级用法 199
14.4 小结 200

第15章 以NHibernate进行数据访问 201
15.1 参考实现的功能概述 201
15.2 应用程序体系架构概述 202
15.3 考察内核 204
15.4 NHibernate配置——应用程序的底层架构 206
15.4.1 NHibernate的配置 207
15.4.2 NHibernate映射——简单但功能强大 208
15.4.3 初始化配置 210
15.5 通过UI表现模型 215
15.6 共同协作 218
15.7 小结 220

第3部分 掌握ASP.NET MVC

第16章 扩展控制器 222
16.1 控制器可扩展性 222
16.2 控制器动作 223
16.3 动作、授权与结果过滤器 224
16.4 动作选择器 226
16.5 使用动作结果降低复杂性 227
16.5.1 利用动作结果消除复制 227
16.5.2 使用动作结果抽象难以测试的依赖性 229
16.6 小结 230

第17章 高级视图技术 231
17.1 消除视图中的复制 231
17.1.1 布局 232
17.1.2 分部 234
17.1.3 子动作 235
17.2 构建查询字符串参数列表 237
17.3 考察Spark视图引擎 239
17.3.1 安装与配置Spark 240
17.3.2 简单的Spark视图示例 241
17.4 小结 246

第18章 依赖性注入与可扩展性 247
18.1 依赖性注入简介 248
18.1.1 什么是DI 248
18.1.2 使用构造器注入 249
18.1.3 接口介绍 250
18.1.4 使用DI容器 251
18.2 在ASP.NET MVC中使用DI 252
18.2.1 自定义控制器工厂 253
18.2.2 使用依赖性解析器 256
18.3 小结 260

第19章 便携式区域 261
19.1 NuGet打包基础 261
19.1.1 一个简单的待打包区域 262
19.1.2 使用便携式区域 263
19.2 创建一个便携式区域的RSS部件 265
19.3 与便携式区域总线之间的交互 268
19.4 小结 269

第20章 完整的系统测试 270
20.1 测试UI层 270
20.1.1 安装测试软件 271
20.1.2 漫游手工测试 272
20.1.3 自动化测试 274
20.1.4 运行测试 275
20.2 建立可维护的导航 276
20.3 与表单的交互 279
20.4 断言结果 282
20.5 小结 287

第21章 托管ASP.NET MVC应用程序 288
21.1 托管环境 288
21.2 XCOPY部署 289
21.3 IIS 7 292
21.4 IIS 6与5.1 294
21.5 Azure托管 296
21.5.1 什么是Windows Azure,如何获取它 297
21.5.2 为Azure部署配置应用程序 301
21.5.3 打包并部署应用程序 307
21.5.4 访问在Windows Azure中运行的应用程序 311
21.6 小结 312

第22章 部署技术 313
22.1 部署持续集成 313
22.2 启用按钮式XCOPY部署 315
22.3 管理环境配置 316
22.4 用Web Deploy启用远程服务器部署 318
22.5 小结 321

第23章 升级到ASP.NET MVC 4 322
23.1 DisplayModes的运行时视图选择 322
23.1.1 使用移动的DisplayMode 322
23.1.2 创建新的DisplayModes 324
23.1.3 使用户能够重写DisplayModes 326
23.2 组合并最小化客户端资源 328
23.3 对Razor的改进 330
23.3.1 自动化的“波浪线-斜线”解析 330
23.3.2 条件属性 331
23.4 小结 332

第24章 ASP.NET Web API 333
24.1 Web API是什么 333
24.1.1 为什么要用Web API 333
24.1.2 Web API与WCF的区别 334
24.2 为Guestbook应用程序添加Web服务 337
24.2.1 创建GET型的Web服务 337
24.2.2 创建POST型的Web服务 339
24.3 Web API的可选办法 342
24.4 小结 343

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多