网 logo

asp.net mvc 4高级编程

内容介绍

MVC专家“梦之队”对ASP.NET MVC 4的全新诠释

微软专家和极受敬重的软件开发社区负责人撰写的《ASP.NET MVC 4高级编程(第4版)》将带您学习最前沿的Web框架:ASP.NET MVC 4。本书开篇简要介绍ASP.NET MVC框架,然后直奔主题,讨论使用ASP.NET和最新MicrosoftMVC来构建数据驱动的动态网站需要了解的所有重要知识点。书中提供了按部就班的详细指导和大量的代码示例,引导读者入门并逐渐掌握高级主题。

本书特色:

◆ 解释ASP.NET MVC框架与“文件页”Web框架的不同之处

◆ 介绍控制器、视图、模型、表单、HTML辅助方法、数据注解、验证、成员资格、授权、安全和路由

◆ 着重介绍最核心的主题:Ajax、jQuery、NuGet、依赖注入、单元测试、MVC扩展和Razor

◆ 在实际的大型ASP.NET MVC案例网站NuGet Gallery中演示所有知识点

◆ 应上一版读者提出的要求,本书涵盖了其他一些紧贴实用的开发知识

作品目录

第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 4的

发展历程 3

1.1.5  ASP.NET MVC 4概述 9

1.1.6  ASP.NET Web API 10

1.1.7  增强的默认项目模板 11

1.1.8  使用jQuery Mobile的

移动项目模板 12

1.1.9  显示模式 13

1.1.10  捆绑和微小框架 13

1.1.11  包含开源库 14

1.1.12  其他功能 14

1.1.13  开源发布 16

1.2  创建ASP.NET MVC 4

应用程序 16

1.2.1  创建ASP.NET MVC 4

应用程序的软件要求 16

1.2.2  安装ASP.NET MVC 4 17

1.2.3  创建ASP.NET MVC 4

应用程序 18

1.2.4  New ASP.NET MVC 4

Project对话框 19

1.3  ASP.NET MVC应用程序的

结构 23

1.4  小结 27

第2章  控制器 29

2.1  控制器的角色 29

2.2  示例应用程序:

MVC 音乐 Store 31

2.3  控制器基础 33

2.3.1  简单示例:Home Controller 34

2.3.2  创建第一个控制器 36

2.3.3  控制器操作中的参数 39

2.4  小结 41

第3章  视图 43

3.1  视图的作用 44

3.2  指定视图 45

3.3  强类型视图 47

3.4  视图模型 49

3.5  添加视图 50

3.6  Razor视图引擎 53

3.6.1  Razor的概念 53

3.6.2  代码表达式 54

3.6.3  HTML编码 56

3.6.4  代码块 58

3.6.5  Razor语法示例 59

3.6.6  布局 61

3.6.7  ViewStart 64

3.7  指定部分视图 64

3.8  小结 65

第4章  模型 67

4.1  为MVC 音乐 Store建模 67

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

4.2.1  基架的含义 70

4.2.2  基架和实体框架 72

4.2.3  执行基架模板 74

4.2.4  执行基架代码 77

4.3  编辑专辑 81

4.3.1  创建编辑专辑的资源 82

4.3.2  响应编辑时的POST请求 84

4.4  模型绑定 86

4.4.1  DefaultModelBinder 87

4.4.2  显式模型绑定 88

4.5  小结 89

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

5.1  表单的使用 91

5.1.1  action和method特性 92

5.1.2  GET方法还是POST方法 92

5.2  HTML辅助方法 96

5.2.1  自动编码 96

5.2.2  辅助方法的使用 97

5.2.3  HTML辅助方法的

工作原理 98

5.2.4  设置专辑编辑表单 98

5.2.5  添加输入元素 100

5.2.6  辅助方法、模型和

视图数据 104

5.2.7  强类型辅助方法 106

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

5.2.9  模板辅助方法 107

5.2.10  辅助方法和ModelState 108

5.3  其他输入辅助方法 109

5.3.1  HTMLHidden 109

5.3.2  Html.Password 109

5.3.3  Html.RadioButton 109

5.3.4  Html.CheckBox 110

5.4  渲染辅助方法 110

5.4.1  Html.ActionLink和

Html.RouteLink 110

5.4.2  URL辅助方法 111

5.4.3  Html.Partial和

Html.RenderPartial 112

5.4.4  HTMLAction和

Html.RenderAction 113

5.5  小结 115

第6章  数据注解和验证 117

6.1  为验证注解订单 118

6.1.1  验证注解的使用 119

6.1.2  自定义错误提示消息及其

本地化 123

6.1.3  注解的后台原理 124

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

6.2  自定义验证逻辑 127

6.2.1  自定义注解 127

6.2.2  IValidatableObject 130

6.3  显示和编辑注解 131

6.3.1  Display 131

6.3.2  ScaffoldColumn 132

6.3.3  DisplayFormat 132

6.3.4  ReadOnly 133

6.3.5  DataType 133

6.3.6  UIHint 134

6.3.7  HiddenInput 134

6.4  小结 134

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

7.1  使用Authorize特性登录 137

7.1.1  保护控制器操作 137

7.1.2  Authorize特性在表单身份

验证和AccountController

控制器中的用法 141

7.1.3  Intranet Application模板中

的Windows Authentication 142

7.1.4  整个控制器的安全性 143

7.1.5  使用全局授权过滤器保障

整个应用程序安全 144

7.2  要求角色成员使用Authorize

特性 145

7.3  扩展角色和成员 146

7.4  通过OAuth和OpenID的

外部登录 146

7.4.1  注册外部登录提供器 148

7.4.2  配置OpenID提供器 148

7.4.3  配置OAuth提供器 151

7.4.4  外部登录的安全性 152

7.5  Web应用程序中的安全向量 153

7.5.1  威胁:跨站脚本 153

7.5.2  威胁:跨站请求伪造 163

7.5.3  威胁:cookie盗窃 167

7.5.4  威胁:重复提交 169

7.5.5  威胁:开放重定向 171

7.6  适当的错误报告和堆栈跟踪 179

7.6.1  使用配置转换 180

7.6.2  在生产环境中使用Retail

部署配置 181

7.6.3  使用专门的错误日志系统 181

7.7  安全回顾和有用资源 182

7.8  小结 182

第8章  Ajax 185

8.1  jQuery 185

8.1.1  jQuery的特性 186

8.1.2  非侵入式ECMAScript 189

8.1.3  jQuery的用法 190

8.2  Ajax辅助方法 193

8.2.1  Ajax的ActionLink方法 193

8.2.2  HTML 5特性 195

8.2.3  Ajax表单 196

8.3  客户端验证 198

8.3.1  jQuery验证 198

8.3.2  自定义验证 200

8.4  辅助方法之外 204

8.4.1  jQuery UI 204

8.4.2  使用jQuery UI实现自动

完成部件 205

8.4.3  JSON和客户端模板 208

8.5  提高Ajax性能 213

8.5.1  使用内容分发网络 213

8.5.2  脚本优化 214

8.5.3  捆绑和微小 214

8.6  小结 215

第9章  路由 217

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

9.2  路由概述 219

9.2.1  对比路由和URL重写 219

9.2.2  路由的定义 220

9.2.3  路由命名 227

9.2.4  MVC区域 229

9.2.5  Catch-All参数 230

9.2.6  段中的多个URL参数 231

9.2.7  StopRoutingHandler和

IgnoreRoute 232

9.2.8  路由的调试 233

9.3  揭秘路由如何生成URL 234

9.3.1  URL生成的高层次概述 235

9.3.2  URL生成详解 235

9.3.3  外界路由值 237

9.3.4  Route类生成URL的若干

示例 239

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

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

9.4.2  路由数据 241

9.5  自定义路由约束 241

9.6  Web Forms和路由机制 242

9.7  小结 243

第10章  NuGet 245

10.1  NuGet概述 245

10.2  NuGet安装 246

10.3  以包的形式添加库 248

10.3.1  查找包 249

10.3.2  安装包 250

10.3.3  更新包 253

10.3.4  最近包 254

10.3.5  包恢复 254

10.3.6  包管理器控制台的用法 255

10.4  创建包 258

10.4.1  打包项目 258

10.4.2  打包文件夹 259

10.4.3  NuSpec文件 259

10.4.4  元数据 260

10.4.5  依赖库 261

10.4.6  指定要包含的文件 262

10.4.7  工具 263

10.4.8  框架和轮廓定位 266

10.4.9  预发布包 267

10.5  发布包 267

10.5.1  发布到NuGet.org 267

10.5.2  使用NuGet.exe 269

10.5.3  包浏览器的用法 271

10.6  小结 272

第11章  ASP.NET Web API 273

11.1  定义ASP.NET Web API 274

11.2  Web API入门 274

11.3  编写API控制器 275

11.3.1  检查示例

ValuesController 275

11.3.2  异步设计:

IHttpController 277

11.3.3  传入的操作参数 278

11.3.4  操作返回值、错误和

异步 278

11.4  配置Web API 279

11.4.1  Web托管Web API的

配置 279

11.4.2  自托管Web API的

配置 280

11.4.3  第三方托管配置 281

11.5  向Web API添加路由 281

11.6  绑定参数 282

11.7  过滤请求 284

11.8  启用依赖注入 285

11.9  探索API编程 286

11.10  跟踪应用程序 287

11.11  Web API示例:

ProductsController 287

11.12  小结 290

第12章  依赖注入 291

12.1  软件设计模式 291

12.1.1  设计模式——

控制反转模式 292

12.1.2  设计模式——

服务定位器 294

12.1.3  设计模式—— 依赖注入 298

12.2  MVC中的依赖解析 300

12.2.1  单一注册服务 302

12.2.2  复合注册服务 302

12.2.3  MVC中的任意对象 304

12.3  Web API中的依赖解析 306

12.3.1  Web API的单一注册

服务 307

12.3.2  Web API中的复合注册

服务 308

12.3.3  Web API中的任意对象 308

12.3.4  对比MVC和Web API

中的依赖解析器 309

12.4  小结 309

第13章  单元测试 311

13.1  单元测试和测试驱动开发

的意义 311

13.1.1  单元测试的定义 312

13.1.2  测试驱动开发的定义 313

13.2  创建单元测试项目 316

13.2.1  检查默认单元测试 317

13.2.2  只测试自己编写的代码 320

13.3  单元测试用于ASP.NET MVC

应用程序的技巧和窍门 321

13.3.1  控制器测试 321

13.3.2  路由测试 326

13.3.3  验证测试 328

13.4  小结 332

第14章  扩展ASP.NET MVC 333

14.1  模型扩展 334

14.1.1  把请求数据转化为模型 334

14.1.2  用元数据描述模型 339

14.1.3  验证模型 342

14.2  视图扩展 345

14.2.1  自定义视图引擎 345

14.2.2  编写HTML辅助方法 348

14.2.3  编写Razor辅助方法 349

14.3  控制器扩展 349

14.3.1  操作选择 349

14.3.2  操作过滤器 351

14.3.3  提供自定义结果 353

14.4  小结 354

第15章  高级主题 355

15.1  移动支持 355

15.1.1  适应性呈现 356

15.1.2  显示模式 360

15.1.3  Mobile Project模板 361

15.2  高级Razor 363

15.2.1  模板化的Razor委托 363

15.2.2  视图编译 364

15.3  高级视图引擎 365

15.3.1  视图引擎配置 366

15.3.2  查找视图 367

15.3.3  视图本身 368

15.3.4  备用视图引擎 369

15.3.5  新视图引擎还是新

ActionResult 370

15.4  高级基架 371

15.4.1  自定义T4代码模板 371

15.4.2  NuGet包

MvcScaffolding 372

15.4.3  更新的Add Controller

对话框选项 373

15.4.4  使用库模板 373

15.4.5  添加基架器 375

15.4.6  额外资源 375

15.5  高级路由 375

15.5.1  RouteMagic 376

15.5.2  可编辑路由 376

15.6  高级模板 380

15.6.1  默认模板 380

15.6.2  自定义模板 385

15.7  高级控制器 386

15.7.1  定义控制器:IController

接口 386

15.7.2  ControllerBase抽象基类 387

15.7.3  控制器类和操作 388

15.7.4  ActionResult 390

15.7.5  操作调用器 398

15.7.6  使用异步控制器操作 401

15.8  小结 408

第16章  ASP.NET MVC实战:

构建NuGet.org网站 409

16.1  源码与我们同在 410

16.2  WebActivator 411

16.3  ASP.NET动态数据 413

16.4  异常日志 416

16.5  性能分析 417

16.6  数据访问 420

16.7  EF基于代码迁移 421

16.8  成员资格 423

16.9  其他有用的NuGet包 424

16.9.1  T4MVC 424

16.9.2  WebBackgrounder 425

16.9.3  Lucene.NET 426

16.9.4  AnglicanGeek.markdown

Mailer 426

16.9.5  Ninject 426

16.10  小结 427

参考资料