精通 ASP.NET MVC 3 框架(第三版)

978-7-115-30212-0
作者: 【美】Adam Freeman Steven Standerson
译者: 林逸李萍
编辑: 张涛
分类: .NET

图书目录:

目 录

第 1部分 ASP.NET MVC 3简介

第 1章 设计思路 2

1.1 Web开发简史 2

1.1.1 传统的ASP.NET Web Form 3

1.1.2 ASP.NET Web Form表单的问题在哪里 3

1.2 当今的Web开发 4

1.2.1 Web标准与REST 4

1.2.2 敏捷与测试驱动开发 5

1.2.3 Ruby on Rails 5

1.2.4 Sinatra 6

1.2.5 Node.js 6

1.3 ASP.NET MVC的主要优势 7

1.3.1 MVC架构 7

1.3.2 可扩展性 7

1.3.3 在HTML及HTTP上的严密控制 8

1.3.4 可测试性 8

1.3.5 强大的路由系统 9

1.3.6 建立在ASP.NET平台的精华之上 9

1.3.7 现代API 10

1.3.8 ASP.NET MVC是开源的 10

1.4 谁该使用ASP.NET MVC 10

1.4.1 与ASP.NET Web Form的比较 11

1.4.2 从Web Form迁移到MVC 11

1.4.3 与Ruby on Rails的比较 11

1.4.4 与MonoRail的比较 12

1.5 ASP.NET MVC 3的新特性 12

1.6 小结 12

第 2章 准备工作 13

2.1 准备工作站 13

2.1.1 安装Visual Studio 2010 13

2.1.2 安装基本软件 14

2.1.3 安装可选组件 15

2.1.4 MVC框架源代码 16

2.1.5 IIS Express 16

2.1.6 SQL Server 2008 R2 Management Studio Express 16

2.2 准备服务器 16

2.2.1 启用Web服务器角色 17

2.2.2 安装其他组件 18

2.2.3 设置Web部署 19

2.2.4 获取更多信息 21

2.3 小结 21

第3章 第 一个MVC应用程序 22

3.1 创建ASP.NET MVC新项目 22

3.1.1 添加第 一个控制器 24

3.1.2 理解路由 25

3.2 渲染Web页面 26

3.2.1 创建并渲染一个视图 26

3.2.2 添加动态输出 28

3.3 创建一个简单的数据录入应用程序 29

3.3.1 设置场景 30

3.3.2 设计一个数据模型 31

3.3.3 添加模型类 31

3.3.4 链接动作方法 31

3.3.5 创建动作方法 32

3.3.6 添加一个强类型视图 33

3.3.7 建立表单 34

3.3.8 处理表单 36

3.3.9 使用模型绑定 37

3.3.10 渲染其他视图 38

3.3.11 添加验证 39

3.3.12 高亮无效字段 41

3.3.13 完成示例 42

3.4 小结 43

第4章 MVC模式 44

4.1 MVC简史 44

4.2 理解MVC模式 44

4.2.1 理解域模型 45

4.2.2 MVC的ASP.NET实现 46

4.2.3 MVC与其他模式比较 46

4.2.4 理解“智能UI”模式 46

4.2.5 理解MVC的变异 48

4.3 运用域驱动开发(DDD) 49

4.3.1 模拟一个例子域 50

4.3.2 通用语言 50

4.3.3 聚合与简化 51

4.3.4 定义存储库 53

4.4 建立松耦合组件 53

4.4.1 使用依赖性注入 54

4.4.2 一个MVC专用的依赖性注入示例 56

4.4.3 使用依赖性注入容器 57

4.5 自动测试初步 57

4.5.1 理解单元测试 58

4.5.2 使用测试驱动开发及“红—绿—重构”工作流 60

4.5.3 理解集成测试 65

4.6 小结 66

第5章 基本语言特性 67

5.1 C#基本特性 67

5.1.1 使用自动实现的属性 67

5.1.2 使用对象与集合初始化器 70

5.1.3 使用扩展方法 71

5.1.4 对接口运用扩展方法 73

5.1.5 创建过滤扩展方法 75

5.1.6 使用lambda表达式 76

5.1.7 使用自动类型接口 78

5.1.8 使用匿名类型 78

5.1.9 执行语言集成查询 79

5.1.10 理解延迟LINQ查询 83

5.1.11 反复使用延迟查询 84

5.2 理解Razor语法 86

5.2.1 创建项目 86

5.2.2 考察基本的Razor视图 88

5.3 小结 95

第6章 MVC基本工具 96

6.1 使用Ninject 96

6.1.1 创建项目 98

6.1.2 Ninject入门 99

6.1.3 创建依赖性链 100

6.1.4 指定属性与参数值 102

6.1.5 使用自身绑定 103

6.1.6 绑定到派生类型 104

6.1.7 使用条件绑定 105

6.2 将Ninject运用于APS.NET MVC 106

6.3 Visual Studio的单元测试 108

6.3.1 创建项目 108

6.3.2 创建单元测试 110

6.3.3 运行单元测试(并失败) 114

6.3.4 实现特性 114

6.4 使用Moq 115

6.4.1 将Moq添加到Visual Studio项目 116

6.4.2 用Moq创建模仿 116

6.4.3 使用Moq的单元测试 118

6.4.4 用Moq作校验 120

6.5 小结 120

第7章 SportsStore:一个真实的应用程序 121

7.1 开始 122

7.1.1 创建Visual Studio解决方案和项目 122

7.1.2 添加引用 123

7.1.3 建立DI容器 124

7.1.4 运行应用程序 125

7.2 从域模型开始 126

7.2.1 创建抽象存储库 127

7.2.2 制作模仿存储库 127

7.3 显示产品列表 128

7.3.1 添加控制器 128

7.3.2 添加视图 129

7.3.3 设置默认路由 130

7.3.4 运行应用程序 131

7.4 准备数据库 131

7.4.1 创建数据库 132

7.4.2 定义数据库方案 132

7.4.3 向数据库添加数据 133

7.4.4 创建实体框架上下文 134

7.4.5 创建Product存储库 135

7.5 添加分页 136

7.5.1 显示页面链接 138

7.5.2 改进URL 145

7.6 设置内容样式 146

7.6.1 定义布局中的公用内容 146

7.6.2 添加CSS规则 147

7.6.3 创建分部视图 148

7.7 小结 150

第8章 SportsStore:导航与购物车 151

8.1 添加导航控件 151

8.1.1 过滤产品列表 151

8.1.2 调整URL方案 154

8.1.3 建立分类导航菜单 156

8.1.4 修正页面计数 163

8.2 建立购物车 165

8.2.1 定义购物车实体 165

8.2.2 添加“Add to Cart(加入购物车)”按钮 169

8.2.3 实现购物车控制器 170

8.2.4 显示购物车内容 172

8.3 使用模型绑定 174

8.4 完成购物车 179

8.4.1 删除购物车的条目 179

8.4.2 添加购物车摘要 180

8.5 递交订单 182

8.5.1 扩充域模型 182

8.5.2 添加结算过程 183

8.5.3 实现订单处理器 186

8.5.4 注册接口实现 189

8.5.5 完成购物车控制器 189

8.5.6 显示验证错误 193

8.5.7 显示致谢页面 193

8.6 小结 195

第9章 SportsStore:管理 196

9.1 添加分类管理 196

9.1.1 创建CRUD控制器 196

9.1.2 渲染存储库中的产品 198

9.1.3 创建新的布局 199

9.1.4 实现List视图 201

9.1.5 编辑产品 204

9.1.6 创建新产品 216

9.1.7 删除产品 217

9.2 使管理特性安全 220

9.2.1 建立表单认证 220

9.2.2 运用过滤器进行授权 221

9.2.3 创建认证提供器 222

9.2.4 创建Account控制器 223

9.2.5 创建视图 225

9.3 图像上传 228

9.3.1 扩展数据库 228

9.3.2 增强域模型 229

9.3.3 创建Upload用户界面元素 230

9.3.4 将图像保存到数据库 231

9.3.5 实现GetImage动作方法 232

9.3.6 显示产品图像 234

9.4 小结 235

第 2部分 ASP.NET MVC 3细节

第 10章 MVC项目综述 238

10.1 使用Visual Studio的MVC项目 238

10.1.1 使用Internet和Intranet应用程序控制器 241

10.1.2 理解MVC约定 241

10.2 调试MVC应用程序 243

10.2.1 创建项目 243

10.2.2 运行Visual Studio调试器 244

10.2.3 引发Visual Studio调试器中断 245

10.2.4 使用编辑并继续 248

10.3 项目范围的依赖性注入 251

10.4 小结 253

第 11章 URL、路由与区域 254

11.1 路由系统介绍 254

11.1.1 创建路由项目 255

11.1.2 URL模式介绍 256

11.1.3 创建并注册一条简单路由 258

11.1.4 定义默认值 262

11.1.5 使用静态URL片段 263

11.1.6 定义自定义片段变量 266

11.1.7 定义可选URL片段 268

11.1.8 定义可变长路由 269

11.1.9 按命名空间区分控制器优先顺序 271

11.1.10 约束路由 273

11.1.11 对磁盘文件的请求进行路由 277

11.1.12 绕过路由系统 279

11.2 生成输出URL 280

11.2.1 准备项目 281

11.2.2 在视图中生成输出URL 281

11.2.3 在动作方法中生成输出URL 287

11.2.4 根据特定路由生成URL 288

11.3 定制路由系统 289

11.3.1 创建一个自定义的RouteBase实现 289

11.3.2 创建自定义路由处理程序 293

11.4 使用区域 294

11.4.1 创建区域 294

11.4.2 填充区域 296

11.4.3 解析不明确的控制器问题 297

11.4.4 生成对区域动作的链接 298

11.5 URL方案**佳实践 299

11.5.1 使URL整洁和人性化 299

11.5.2 GET和POST:选用正确的一个 300

11.6 小结 301

第 12章 控制器与动作 302

12.1 控制器介绍 302

12.1.1 准备项目 302

12.1.2 用IController创建控制器 302

12.1.3 创建派生于Controller类的控制器 303

12.2 接收输入 305

12.2.1 通过上下文对象获取数据 305

12.2.2 使用动作方法参数 306

12.3 产生输出 308

12.3.1 理解动作结果 310

12.3.2 通过渲染视图返回HTML 313

12.3.3 把数据从动作方法传递给视图 317

12.3.4 执行重定向 321

12.3.5 返回文本数据 325

12.3.6 返回XML数据 327

12.3.7 返回JSON数据 328

12.3.8 返回文件及二进制数据 328

12.3.9 返回错误及HTTP代码 331

12.3.10 创建自定义动作结果 332

12.4 小结 335

第 13章 过滤器 336

13.1 使用过滤器 336

13.1.1 过滤器的四种基本类型 338

13.1.2 将过滤器应用于控制器和动作方法 338

13.1.3 使用授权过滤器 339

13.1.4 使用异常过滤器 345

13.1.5 使用动作和结果过滤器 348

13.1.6 使用其他过滤器特性 353

13.1.7 使用内建过滤器 358

13.2 小结 361

第 14章 控制器可扩展性 362

14.1 请求处理管道组件 362

14.2 创建控制器工厂 362

14.2.1 定义自定义控制器工厂 363

14.2.2 注册自定义控制器工厂 365

14.3 使用内建的控制器工厂 365

14.3.1 命名空间优先排序 366

14.3.2 定制DefaultControllerFactory的控制器创建 366

14.4 创建自定义动作调用器 368

14.5 使用内建的动作调用器 370

14.5.1 使用自定义动作名 371

14.5.2 动作方法选择 372

14.5.3 用动作方法选择器支持REST服务 375

14.6 用特殊控制器改善性能 377

14.6.1 使用无会话控制器 378

14.6.2 使用异步控制器 380

14.7 小结 388

第 15章 视图 389

15.1 创建自定义视图引擎 389

15.1.1 创建自定义IView 391

15.1.2 创建IViewEngine实现 392

15.1.3 注册自定义视图引擎 393

15.2 使用Razor引擎 395

15.2.1 理解Razor视图渲染 395

15.2.2 对Razor视图添加依赖性注入 397

15.2.3 配置视图搜索位置 398

15.3 对Razor视图添加动态内容 400

15.4 使用HTML辅助器 405

15.4.1 创建内联的HTML辅助器 406

15.4.2 创建外部辅助器方法 407

15.4.3 使用内建的HTML辅助器 408

15.5 使用分段 421

15.5.1 对分段进行检测 423

15.5.2 渲染可选分段 424

15.6 使用分部视图 424

15.6.1 创建分部视图 424

15.6.2 使用强类型分部视图 425

15.7 使用子动作 427

15.7.1 创建子动作 427

15.7.2 渲染子动作 428

15.8 小结 428

第 16章 模型模板 429

16.1 使用模板视图辅助器 429

16.1.1 设置生成HTML的样式 433

16.1.2 使用模型元数据 434

16.1.3 使用复合类型参数 441

16.2 定制模板视图辅助器系统 442

16.2.1 创建自定义编辑模板 442

16.2.2 创建自定义显示模板 445

16.2.3 创建泛型模板 446

16.2.4 替换内建模板 446

16.2.5 使用ViewData.TemplateInfo属性 447

16.2.6 把额外元数据传递给模板 449

16.3 理解元数据提供器系统 450

16.3.1 创建自定义模型元数据提供器 451

16.3.2 定制数据注解模型元数据提供器 453

16.4 小结 454

第 17章 模型绑定 455

17.1 理解模型绑定 455

17.2 使用默认模型绑定器 457

17.2.1 绑定简单类型 458

17.2.2 绑定复合类型 459

17.2.3 绑定到数组与集合 462

17.3 手工调用模型绑定 465

17.3.1 限制绑定到特定数据源 466

17.3.2 处理绑定错误 467

17.4 使用模型绑定接收文件上传 468

17.5 自定义模型绑定系统 469

17.5.1 创建自定义的值提供器 469

17.5.2 创建依赖性感知的模型绑定器 471

17.5.3 创建自定义模型绑定器 472

17.5.4 创建模型绑定器提供器 474

17.5.5 使用ModelBinder注解属性 475

17.6 小结 476

第 18章 模型验证 477

18.1 创建项目 477

18.2 明确地验证模型 479

18.3 显示验证消息 481

18.4 使用其他验证技术 485

18.4.1 模型绑定器中执行验证 485

18.4.2 用元数据指定验证规则 488

18.4.3 定义自验证模型 492

18.4.4 创建自定义验证提供器 493

18.5 执行客户端验证 496

18.5.1 启用和禁用客户端验证 497

18.5.2 使用客户端验证 500

18.5.3 理解客户端验证机制 502

18.5.4 自定义客户端验证 503

18.6 执行远程验证 509

18.7 小结 511

第 19章 非唐突Ajax 512

19.1 使用MVC的非唐突Ajax 512

19.1.1 创建项目 512

19.1.2 启用和禁用非唐突Ajax 515

19.1.3 使用非唐突Ajax表单 516

19.1.4 理解非唐突Ajax如何工作 517

19.2 设置Ajax选项 518

19.2.1 确保优雅降级 518

19.2.2 在Ajax请求期间给用户提供反馈 520

19.2.3 请求之前对用户进行提示 521

19.3 创建Ajax链接 522

19.4 使用Ajax回调 524

19.5 使用JSON 527

19.5.1 对控制器添加JSON支持 528

19.5.2 在浏览器中处理JSON 529

19.5.3 在动作方法中检测Ajax请求 530

19.5.4 接收JSON数据 531

19.6 小结 533

第 20章 jQuery 534

20.1 创建项目 534

20.2 引用jQuery 536

20.3 编写jQuery代码 538

20.4 jQuery基本理论 541

20.4.1 理解jQuery选择器 542

20.4.2 使用jQuery过滤器 544

20.4.3 理解jQuery方法 547

20.4.4 等待DOM 547

20.4.5 使用jQuery的CSS方法 548

20.4.6 使用DOM 551

20.5 使用jQuery事件 554

20.6 使用jQuery视觉效果 555

20.7 使用jQuery UI 556

20.7.1 引用jQuery UI 557

20.7.2 制作更好的按钮 557

20.7.3 使用Silder滑块 559

20.8 小结 561

第3部分 交付已完成的ASP.NET MVC 3项目

第 21章 安全性与脆弱性 564

21.1 所有输入都可以伪造 564

伪造HTTP请求 566

21.2 跨网站脚本与HTML注入 567

21.2.1 理解XSS漏洞 568

21.2.2 Razor的HTML编码 569

21.2.3 请求验证 570

21.2.4 JavaScript字符串编码与XSS 572

21.3 会话劫持 574

21.3.1 通过客户端IP地址检查进行防护 575

21.3.2 通过在cookie中设置HttpOnly标志进行防护 575

21.4 跨网站请求伪造 576

21.4.1 攻击 577

21.4.2 防护 577

21.4.3 用Antiforgery辅助器阻止CSRF 578

21.5 SQL注入 579

21.5.1 攻击 580

21.5.2 用参数化查询进行防护 580

21.5.3 用对象关系映射进行防护 581

21.6 安全使用MVC框架 581

21.6.1 不要意外暴露动作方法 581

21.6.2 不要允许模型绑定修改敏感属性 582

21.7 小结 582

第 22章 认证与授权 583

22.1 使用Windows认证 583

22.2 使用表单认证 585

22.2.1 建立表单认证 586

22.2.2 使用cookieless表单认证 588

22.3 使用成员、角色和简档 589

22.3.1 建立并使用成员 590

22.3.2 建立并使用角色 598

22.3.3 建立并使用简档 601

22.4 为什么不应该使用基于URL的授权 606

22.5 小结 608

第 23章 部署 609

23.1 准备要部署的应用程序 609

23.1.1 部署前检测视图错误 609

23.1.2 配置动态页面编译 610

23.1.3 为bin部署做准备 611

23.1.4 准备用于转换的Web.config文件 612

23.2 理解转换结构 613

23.2.1 插入配置元素 615

23.2.2 删除配置元素 617

23.2.3 设置和删除属性 618

23.2.4 替换元素 619

23.2.5 使用Locator属性 620

23.2.6 准备数据库部署准备项目 622

23.3 理解IIS基本原理 624

23.3.1 理解Web网站 624

23.3.2 理解虚拟目录 625

23.3.3 理解应用程序池 625

23.3.4 将Web网站绑定到主机名、IP地址及端口 625

23.4 为部署准备服务器 626

23.5 部署应用程序 627

23.5.1 通过复制文件部署应用程序 627

23.5.2 使用部署包 629

23.5.3 使用一键发布 631

23.6 小结 632

详情

ASP.NET MVC 3框架是微软的ASP.NET Web平台的最新发展。它提供了一个高生产力的编程模型,促进更清晰的代码结构,测试驱动的开发和强大的可扩展性,在第三版中包括核心模型-视图-控制器 (MVC)体系结构。

图书摘要

相关图书

程序员的制胜技
程序员的制胜技
Dapr与.NET微服务实战
Dapr与.NET微服务实战
精通ASP.NET Core MVC 第7版
精通ASP.NET Core MVC 第7版
深入浅出 ASP.NET Core
深入浅出 ASP.NET Core
ASP.NET Core真机拆解
ASP.NET Core真机拆解
ASP.NET Core与RESTful API 开发实战
ASP.NET Core与RESTful API 开发实战

相关文章

相关课程