作为Microsoft备受欢迎的MVC技术的最新版本,MVC5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的网站具有复杂的功能,如单页面应用程序、针对移动设备优化、适应性呈现等。埃斯波西托编著的《ASP.NETMVC5编程实战》还包括了MVC5.1和MVC5.2中的一些新特性。通过采用分步骤讲解的方法,指导读者如何充分利用MVC。本书的作者不是Microsoft的ASP.NETMVC专家,就是ASP.NETMVC领域的智者,所以作为一本实用的教程,不但强化开发人员对概念的认识,也帮助开发人员创建自己的应用程序。
第1章 入门
1.1 ASP.NET MVC简介
1.1.1 ASP.NET MVC如何适应ASP.NET
1.1.2 MVC模式简介
1.1.3 MVC在Web框架中的应用
1.1.4 ASP.NET MVC 5的发展历程
1.1.5 ASP.NET MVC 4概述
1.1.6 开源发布
1.2 ASP.NET MVC 5概述
1.2.1 One ASP.NET
1.2.2 新的Web项目体验
1.2.3 ASP.NET Identity
1.2.4 Bootstrap模板
1.2.5 特性路由
1.2.6 ASP.NET基架
1.2.7 身份验证过滤器
1.2.8 过滤器重写
1.3 安装MVC 5和创建应用程序
1.3.1 ASP.NET MVC 5的软件需求
1.3.2 安装ASP.NET MVC 5
1.3.3 创建ASP.NET MVC 5应用程序
1.3.4 New ASP.NET Project对话框
1.4 ASP.NET MVC应用程序的结构
1.4.1 ASP.NET MVC和约定
1.4.2 约定优于配置
1.4.3 约定简化通信
1.5 小结
第2章 控制器
2.1 控制器的角色
2.2 示例应用程序:MVC Music Store
2.3 控制器基础
2.3.1 简单示例:Home Controller
2.3.2 创建第一个控制器
2.3.3 控制器操作中的参数
2.4 小结
第3章 视图
3.1 视图的作用
3.2 视图的基础知识
3.3 理解视图约定
3.4 强类型视图
3.4.1 ViewBag的不足
3.4.2 理解ViewBag、ViewData和ViewDataDictionary
3.5 视图模型
3.6 添加视图
3.7 Razor视图引擎
3.7.1 Razor的概念
3.7.2 代码表达式
3.7.3 HTML编码
3.7.4 代码块
3.7.5 Razor语法示例
3.7.6 布局
3.7.7 ViewStart
3.8 指定部分视图
3.9 小结
第4章 模型
4.1 为MVC Music Store建模
4.2 为商店管理器构造基架
4.2.1 基架的含义
4.2.2 基架和实体框架
4.2.3 执行基架模板
4.2.4 执行基架代码
4.3 编辑专辑
4.3.1 创建编辑专辑的资源
4.3.2 响应编辑时的POST请求
4.4 模型绑定
4.4.1 DefaultModelBinder
4.4.2 显式模型绑定
4.5 小结
第5章 表单和HTML辅助方法
5.1 表单的使用
5.1.1 action和method特性
5.1.2 GET方法还是POST方法
5.2 HTML辅助方法
5.2.1 自动编码
5.2.2 辅助方法的使用
5.2.3 HTML辅助方法的工作原理
5.2.4 设置专辑编辑表单
5.2.5 添加输入元素
5.2.6 辅助方法、模型和视图数据
5.2.7 强类型辅助方法
5.2.8 辅助方法和模型元数据
5.2.9 模板辅助方法
5.2.10 辅助方法和ModelState
5.3 其他输入辅助方法
5.3.1 Html.Hidden
5.3.2 Html.Password
5.3.3 Html.RadioButton
5.3.4 Html.CheckBox
5.4 渲染辅助方法
5.4.1 Html.ActionLink和Html.RouteLink
5.4.2 URL辅助方法
5.4.3 Html.Partial和Html.RenderPartial
5.4.4 Html.Action和Html.RenderAction
5.5 小结
第6章 数据注解和验证
6.1 为验证注解订单
6.1.1 验证注解的使用
6.1.2 自定义错误提示消息及其本地化
6.1.3 注解的后台原理
6.1.4 控制器操作和验证错误
6.2 自定义验证逻辑
6.2.1 自定义注解
6.2.2 IValidatableObject
6.3 显示和编辑注解
6.3.1 Display
6.3.2 ScaffoldColumn
6.3.3 DisplayFormat
6.3.4 ReadOnly
6.3.5 DataType
6.3.6 UIHint
6.3.7 HiddenInput
6.4 小结
第7章 成员资格、授权和安全性
7.1 安全性:无趣、但极其重要
7.2 使用Authorize特性登录
7.2.1 保护控制器操作
7.2.2 Authorize特性在表单身份验证和AccountController控制器中的用法
7.2.3 Windows Authentication
7.3 要求角色成员使用Authorize特性
7.4 扩展用户身份
7.4.1 存储额外的用户资料数据
7.4.2 持久化控制
7.4.3 管理用户和角色
7.5 通过OAuth和OpenID的外部登录
7.5.1 注册外部登录提供器
7.5.2 配置OpenID提供器
7.5.3 配置OAuth提供器
7.5.4 外部登录的安全性
7.6 Web应用程序中的安全向量
7.6.1 威胁:跨站脚本
7.6.2 威胁:跨站请求伪造
7.6.3 威胁:cookie盗窃
7.6.4 威胁:重复提交
7.6.5 威胁:开放重定向
7.7 适当的错误报告和堆栈跟踪
7.7.1 使用配置转换
7.7.2 在生产环境中使用Retail部署配置
7.7.3 使用专门的错误日志系统
7.8 安全回顾和有用资源
7.9 小结
第8章 Ajax
8.1 jQuery
8.1.1 jQuery的特性
8.1.2 非侵入式JavaScript
8.1.3 jQuery的用法
8.2 Ajax辅助方法
8.2.1 在项目中添加非侵入式Ajax脚本
8.2.2 Ajax的ActionLink方法
8.2.3 HTML 5特性
8.2.4 Ajax表单
8.3 客户端验证
8.3.1 jQuery验证
8.3.2 自定义验证
8.4 辅助方法之外
8.4.1 jQuery UI
8.4.2 使用jQuery UI实现自动完成部件
8.4.3 JSON和客户端模板
8.4.4 Bootstrap插件
8.5 提高Ajax性能
8.5.1 使用内容分发网络
8.5.2 脚本优化
8.5.3 捆绑和微小
8.6 小结
第9章 路由
9.1 统一资源定位符――URL
9.2 路由概述
9.2.1 对比路由和URL重写
9.2.2 路由方法
9.2.3 定义特性路由
9.2.4 定义传统路由
9.2.5 选择特性路由还是传统路由
9.2.6 路由命名
9.2.7 MVC区域
9.2.8 catch-all参数
9.2.9 段中的多个路由参数
9.2.10 StopRoutingHandler和IgnoreRoute
9.2.11 路由的调试
9.3 揭秘路由如何生成URL
9.3.1 URL生成的高层次概述
9.3.2 URL生成详解
9.3.3 外界路由值
9.3.4 Route类生成URL的若干示例
9.4 揭秘路由如何绑定到操作
9.4.1 高层次请求的路由管道
9.4.2 路由数据
9.5 自定义路由约束
9.6 Web Forms和路由机制
9.7 小结
第10章 NuGet
10.1 NuGet概述
10.2 以包的形式添加库
10.2.1 查找包
10.2.2 安装包
10.2.3 更新包
10.2.4 包恢复
10.2.5 包管理器控制台的用法
10.3 创建包
10.3.1 打包项目
10.3.2 打包文件夹
10.3.3 配置文件和源代码转换
10.3.4 NuSpec文件
10.3.5 元数据
10.3.6 依赖库
10.3.7 指定要包含的文件
10.3.8 工具
10.3.9 框架和轮廓定位
10.3.10 预发布包
10.4 发布包
10.4.1 发布到NuGet.org
10.4.2 使用NuGet.exe
10.4.3 包浏览器的用法
10.5 小结
第11章 ASP.NET Web API
11.1 定义ASP.NET Web API
11.2 Web API入门
11.3 编写API控制器
11.3.1 检查示例ValuesController
11.3.2 异步设计:
IHttpController
11.3.3 传入的操作参数
11.3.4 操作返回值、错误和异步
11.4 配置Web API
11.4.1 Web托管Web API的配置
11.4.2 自托管Web API的配置
11.5 向Web API添加路由
11.6 绑定参数
11.7 过滤请求
11.8 启用依赖注入
11.9 探索API编程
11.10 跟踪应用程序
11.11 Web API示例:ProductsController
11.12 小结
第12章 应用AngularJS构建单页面应用程序
12.1 理解和安装AngularJS
12.1.1 AngularJS简介
12.1.2 本章目标
12.1.3 入门
12.1.4 向网站中添加AngularJS
12.1.5 数据库设置
12.2 创建Web API
12.3 创建应用程序和模块
12.3.1 创建控制器、模型和视图
12.3.2 服务
12.3.3 路由
12.3.4 详细视图
12.3.5 自定义电影服务
12.3.6 删除电影
12.3.7 编辑和创建电影
12.4 小结
第13章 依赖注入
13.1 软件设计模式
13.1.1 设计模式――控制反转模式
13.1.2 设计模式――服务定位器
13.1.3 设计模式―― 依赖注入
13.2 MVC中的依赖解析
13.2.1 MVC中的单一注册服务
13.2.2 MVC中的复合注册服务
13.2.3 MVC中的任意对象
13.3 Web API中的依赖解析
13.3.1 Web API中的单一注册服务
13.3.2 Web API中的复合注册服务
13.3.3 Web API中的任意对象
13.3.4 对比MVC和Web API中的依赖解析器
13.4 小结
第14章 单元测试
14.1 单元测试和测试驱动开发的意义
14.1.1 单元测试的定义
14.1.2 测试驱动开发的定义
14.2 创建单元测试项目
14.2.1 检查默认单元测试
14.2.2 只测试自己编写的代码
14.3 单元测试用于ASP.NET MVC和ASP.NET Web API应用程序的技巧和窍门
14.3.1 控制器测试
14.3.2 路由测试
14.3.3 验证测试
14.4 小结
第15章 扩展ASP.NET MVC
15.1 模型扩展
15.1.1 把请求数据转换为模型
15.1.2 用元数据描述模型
15.1.3 验证模型
15.2 视图扩展
15.2.1 自定义视图引擎
15.2.2 编写HTML辅助方法
15.2.3 编写Razor辅助方法
15.3 控制器扩展
15.3.1 操作选择
15.3.2 操作过滤器
15.3.3 提供自定义结果
15.4 小结
第16章 高级主题
16.1 移动支持
16.1.1 适应性呈现
16.1.2 显示模式
16.2 高级Razor
16.2.1 模板化的Razor委托
16.2.2 视图编译
16.3 高级视图引擎
16.3.1 视图引擎配置
16.3.2 查找视图
16.3.3 视图本身
16.3.4 备用视图引擎
16.3.5 新视图引擎还是新ActionResult
16.4 高级基架
16.4.1 ASP.NET基架简介
16.4.2 自定义基架模板
16.4.3 自定义基架器
16.5 高级路由
16.5.1 RouteMagic
16.5.2 可编辑路由
16.6 高级模板
16.6.1 默认模板
16.6.2 自定义模板
16.7 高级控制器
16.7.1 定义控制器:IController接口
16.7.2 ControllerBase抽象基类
16.7.3 控制器类和操作
16.7.4 ActionResult
16.7.5 操作调用器
16.7.6 使用异步控制器操作
16.8 小结
第17章 ASP.NET MVC实战: 构建NuGet.org网站
17.1 源码与我们同在
17.2 WebActivator
17.3 ASP.NET动态数据
17.4 异常日志
17.5 性能分析
17.6 数据访问
17.7 EF基于代码迁移
17.8 使用Octopus Deploy进行部署
17.9 使用Fluent Automation自动进行浏览器测试
17.10 其他有用的NuGet包
17.10.1 WebBackgrounder
17.10.2 Lucene.NET
17.10.3 AnglicanGeek.MarkdownMailer
17.10.4 Ninject
17.11 小结
附录A ASP.NET MVC 5.1