首页 > 图书中心 > ASP.NET MVC 5高级编程(第5版)

目录

目    录

第1章  入门 1

1.1  ASP.NET MVC简介 1

1.1.1  ASP.NET MVC如何适应ASP.NET 1

1.1.2  MVC模式简介 2

1.1.3  MVC在Web框架中的应用 2

1.1.4  ASP.NET MVC 5的发展历程 3

1.1.5  ASP.NET MVC 4概述 6

1.1.6  开源发布 9

1.2  ASP.NET MVC 5概述 9

1.2.1  One ASP.NET 10

1.2.2  新的Web项目体验 10

1.2.3  ASP.NET Identity 10

1.2.4  Bootstrap模板 11

1.2.5  特性路由 13

1.2.6  ASP.NET基架 13

1.2.7  身份验证过滤器 13

1.2.8  过滤器重写 13

1.3  安装MVC 5和创建应用程序 13

1.3.1  ASP.NET MVC 5的软件需求 13

1.3.2  安装ASP.NET MVC 5 14

1.3.3  创建ASP.NET MVC 5应用程序 14

1.3.4  New ASP.NET Project对话框 15

1.4  ASP.NET MVC应用程序的结构 19

1.4.1  ASP.NET MVC和约定 21

1.4.2  约定优于配置 21

1.4.3  约定简化通信 22

1.5  小结 22

第2章  控制器 23

2.1  控制器的角色 23

2.2  示例应用程序:MVC Music Store 25

2.3  控制器基础 28

2.3.1  简单示例:Home Controller 28

2.3.2  创建第一个控制器 30

2.3.3  控制器操作中的参数 33

2.4  小结 35

第3章  视图 36

3.1  视图的作用 37

3.2  视图的基础知识 37

3.3  理解视图约定 40

3.4  强类型视图 41

3.4.1  ViewBag的不足 41

3.4.2  理解ViewBag、ViewData和ViewDataDictionary 43

3.5  视图模型 44

3.6  添加视图 45

3.7  Razor视图引擎 47

3.7.1  Razor的概念 48

3.7.2  代码表达式 49

3.7.3  HTML编码 50

3.7.4  代码块 52

3.7.5  Razor语法示例 52

3.7.6  布局 54

3.7.7  ViewStart 56

3.8  指定部分视图 57

3.9  小结 58

第4章  模型 59

4.1  为MVC Music Store建模 60

4.2  为商店管理器构造基架 63

4.2.1  基架的含义 63

4.2.2  基架和实体框架 64

4.2.3  执行基架模板 66

4.2.4  执行基架代码 71

4.3  编辑专辑 75

4.3.1  创建编辑专辑的资源 76

4.3.2  响应编辑时的POST请求 79

4.4  模型绑定 80

4.4.1  DefaultModelBinder 81

4.4.2  显式模型绑定 82

4.5  小结 84

第5章  表单和HTML辅助方法 85

5.1  表单的使用 85

5.1.1  action和method特性 86

5.1.2  GET方法还是POST方法 86

5.2  HTML辅助方法 89

5.2.1  自动编码 90

5.2.2  辅助方法的使用 91

5.2.3  HTML辅助方法的工作原理 91

5.2.4  设置专辑编辑表单 92

5.2.5  添加输入元素 93

5.2.6  辅助方法、模型和视图数据 98

5.2.7  强类型辅助方法 100

5.2.8  辅助方法和模型元数据 101

5.2.9  模板辅助方法 101

5.2.10  辅助方法和ModelState 102

5.3  其他输入辅助方法 103

5.3.1  Html.Hidden 103

5.3.2  Html.Password 103

5.3.3  Html.RadioButton 103

5.3.4  Html.CheckBox 104

5.4  渲染辅助方法 104

5.4.1  Html.ActionLink和Html.RouteLink 104

5.4.2  URL辅助方法 105

5.4.3  Html.Partial和Html.RenderPartial 106

5.4.4  Html.Action和Html.RenderAction 107

5.5  小结 108

第6章  数据注解和验证 109

6.1  为验证注解订单 110

6.1.1  验证注解的使用 112

6.1.2  自定义错误提示消息及其本地化 116

6.1.3  注解的后台原理 117

6.1.4  控制器操作和验证错误 118

6.2  自定义验证逻辑 120

6.2.1  自定义注解 120

6.2.2  IValidatableObject 123

6.3  显示和编辑注解 124

6.3.1  Display 124

6.3.2  ScaffoldColumn 125

6.3.3  DisplayFormat 125

6.3.4  ReadOnly 125

6.3.5  DataType 126

6.3.6  UIHint 126

6.3.7  HiddenInput 126

6.4  小结 126

第7章  成员资格、授权和安全性 127

7.1  安全性:无趣、但极其重要 127

7.2  使用Authorize特性登录 129

7.2.1  保护控制器操作 129

7.2.2  Authorize特性在表单身份验证和AccountController控制器中的用法 133

7.2.3  Windows Authentication 134

7.3  要求角色成员使用Authorize特性 137

7.4  扩展用户身份 138

7.4.1  存储额外的用户资料数据 139

7.4.2  持久化控制 139

7.4.3  管理用户和角色 139

7.5  通过OAuth和OpenID的外部登录 139

7.5.1  注册外部登录提供器 141

7.5.2  配置OpenID提供器 142

7.5.3  配置OAuth提供器 144

7.5.4  外部登录的安全性 144

7.6  Web应用程序中的安全向量 145

7.6.1  威胁:跨站脚本 146

7.6.2  威胁:跨站请求伪造 154

7.6.3  威胁:cookie盗窃 158

7.6.4  威胁:重复提交 160

7.6.5  威胁:开放重定向 162

7.7  适当的错误报告和堆栈跟踪 166

7.7.1  使用配置转换 167

7.7.2  在生产环境中使用Retail部署配置 168

7.7.3  使用专门的错误日志系统 168

7.8  安全回顾和有用资源 168

7.9  小结 169

第8章  Ajax 171

8.1  jQuery 172

8.1.1  jQuery的特性 172

8.1.2  非侵入式JavaScript 175

8.1.3  jQuery的用法 176

8.2  Ajax辅助方法 181

8.2.1  在项目中添加非侵入式Ajax脚本 182

8.2.2  Ajax的ActionLink方法 183

8.2.3  HTML 5特性 185

8.2.4  Ajax表单 186

8.3  客户端验证 188

8.3.1  jQuery验证 188

8.3.2  自定义验证 191

8.4  辅助方法之外 196

8.4.1  jQuery UI 196

8.4.2  使用jQuery UI实现自动完成部件 197

8.4.3  JSON和客户端模板 200

8.4.4  Bootstrap插件 204

8.5  提高Ajax性能 206

8.5.1  使用内容分发网络 206

8.5.2  脚本优化 206

8.5.3  捆绑和微小 207

8.6  小结 208

第9章  路由 209

9.1  统一资源定位符——URL 209

9.2  路由概述 210

9.2.1  对比路由和URL重写 211

9.2.2  路由方法 211

9.2.3  定义特性路由 212

9.2.4  定义传统路由 221

9.2.5  选择特性路由还是传统路由 229

9.2.6  路由命名 229

9.2.7  MVC区域 231

9.2.8  catch-all参数 233

9.2.9  段中的多个路由参数 233

9.2.10  StopRoutingHandler和IgnoreRoute 234

9.2.11  路由的调试 235

9.3  揭秘路由如何生成URL 236

9.3.1  URL生成的高层次概述 237

9.3.2  URL生成详解 237

9.3.3  外界路由值 238

9.3.4  Route类生成URL的若干示例 240

9.4  揭秘路由如何绑定到操作 241

9.4.1  高层次请求的路由管道 241

9.4.2  路由数据 242

9.5  自定义路由约束 242

9.6  Web Forms和路由机制 243

9.7  小结 244

第10章  NuGet 245

10.1  NuGet概述 245

10.2  以包的形式添加库 246

10.2.1  查找包 247

10.2.2  安装包 248

10.2.3  更新包 251

10.2.4  包恢复 251

10.2.5  包管理器控制台的用法 252

10.3  创建包 254

10.3.1  打包项目 255

10.3.2  打包文件夹 256

10.3.3  配置文件和源代码转换 256

10.3.4  NuSpec文件 257

10.3.5  元数据 258

10.3.6  依赖库 259

10.3.7  指定要包含的文件 260

10.3.8  工具 260

10.3.9  框架和轮廓定位 263

10.3.10  预发布包 264

10.4  发布包 264

10.4.1  发布到NuGet.org 265

10.4.2  使用NuGet.exe 267

10.4.3  包浏览器的用法 268

10.5  小结 269

第11章  ASP.NET Web API 271

11.1  定义ASP.NET Web API 272

11.2  Web API入门 272

11.3  编写API控制器 273

11.3.1  检查示例ValuesController 273

11.3.2  异步设计:

IHttpController 274

11.3.3  传入的操作参数 277

11.3.4  操作返回值、错误和异步 277

11.4  配置Web API 279

11.4.1   Web托管Web API的配置 279

11.4.2  自托管Web API的配置 280

11.5  向Web API添加路由 282

11.6  绑定参数 283

11.7  过滤请求 285

11.8  启用依赖注入 286

11.9  探索API编程 286

11.10  跟踪应用程序 287

11.11  Web API示例:ProductsController 287

11.12  小结 289

第12章  应用AngularJS构建单页面应用程序 290

12.1  理解和安装AngularJS 291

12.1.1  AngularJS简介 291

12.1.2  本章目标 291

12.1.3  入门 291

12.1.4  向网站中添加AngularJS 293

12.1.5  数据库设置 294

12.2  创建Web API 296

12.3  创建应用程序和模块 297

12.3.1  创建控制器、模型和视图 298

12.3.2  服务 300

12.3.3  路由 303

12.3.4  详细视图 305

12.3.5  自定义电影服务 306

12.3.6  删除电影 308

12.3.7  编辑和创建电影 310

12.4  小结 315

第13章  依赖注入 316

13.1  软件设计模式 316

13.1.1  设计模式——控制反转模式 317

13.1.2  设计模式——服务定位器 318

13.1.3  设计模式—— 依赖注入 322

13.2  MVC中的依赖解析 325

13.2.1  MVC中的单一注册服务 326

13.2.2  MVC中的复合注册服务 326

13.2.3  MVC中的任意对象 328

13.3  Web API中的依赖解析 330

13.3.1  Web API中的单一注册服务 330

13.3.2  Web API中的复合注册服务 331

13.3.3  Web API中的任意对象 332

13.3.4  对比MVC和Web API中的依赖解析器 332

13.4  小结 333

第14章  单元测试 334

14.1  单元测试和测试驱动开发的意义 334

14.1.1  单元测试的定义 335

14.1.2  测试驱动开发的定义 336

14.2  创建单元测试项目 339

14.2.1  检查默认单元测试 339

14.2.2  只测试自己编写的代码 340

14.3  单元测试用于ASP.NET MVC和ASP.NET Web API应用程序的技巧和窍门 341

14.3.1  控制器测试 341

14.3.2  路由测试 346

14.3.3  验证测试 349

14.4  小结 352

第15章  扩展ASP.NET MVC 353

15.1  模型扩展 354

15.1.1  把请求数据转换为模型 354

15.1.2  用元数据描述模型 359

15.1.3  验证模型 361

15.2  视图扩展 364

15.2.1  自定义视图引擎 364

15.2.2  编写HTML辅助方法 366

15.2.3  编写Razor辅助方法 367

15.3  控制器扩展 368

15.3.1  操作选择 368

15.3.2  操作过滤器 370

15.3.3  提供自定义结果 378

15.4  小结 379

第16章  高级主题 381

16.1  移动支持 381

16.1.1  适应性呈现 382

16.1.2  显示模式 386

16.2  高级Razor 388

16.2.1  模板化的Razor委托 388

16.2.2  视图编译 389

16.3  高级视图引擎 390

16.3.1  视图引擎配置 391

16.3.2  查找视图 392

16.3.3  视图本身 393

16.3.4  备用视图引擎 393

16.3.5  新视图引擎还是新ActionResult 395

16.4  高级基架 395

16.4.1  ASP.NET基架简介 395

16.4.2  自定义基架模板 395

16.4.3  自定义基架器 398

16.5  高级路由 398

16.5.1  RouteMagic 398

16.5.2  可编辑路由 399

16.6  高级模板 402

16.6.1  默认模板 403

16.6.2  自定义模板 406

16.7  高级控制器 408

16.7.1  定义控制器:IController接口 408

16.7.2  ControllerBase抽象基类 409

16.7.3  控制器类和操作 410

16.7.4  ActionResult 411

16.7.5  操作调用器 418

16.7.6  使用异步控制器操作 421

16.8  小结 426

第17章  ASP.NET MVC实战: 构建NuGet.org网站 427

17.1  源码与我们同在 428

17.2  WebActivator 430

17.3  ASP.NET动态数据 431

17.4  异常日志 433

17.5  性能分析 435

17.6  数据访问 437

17.7  EF基于代码迁移 438

17.8  使用Octopus Deploy进行部署 440

17.9  使用Fluent Automation自动进行浏览器测试 441

17.10  其他有用的NuGet包 441

17.10.1  WebBackgrounder 442

17.10.2  Lucene.NET 443

17.10.3  AnglicanGeek.MarkdownMailer 443

17.10.4  Ninject 443

17.11  小结 444

附录A  ASP.NET MVC 5.1 445

 

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘