ASP.NET MVC 3 高级编程.pdf

ASP.NET MVC 3 高级编程.pdf
 

书籍描述

编辑推荐
《ASP.NET MVC 3 高级编程》适用于希望向网站添加更多完整的测试,以及希望能做出一些与众不同的内容的Web开发人员。《ASP.NET MVC 3 高级编程》由Microsoft公司内部用队编写,深入阐述了如何使用ASENETMVC 3的新特性及其激动人心的功能。《ASP.NET MVC 3 高级编程》首先简单介绍了ASRNET MVC框架,然后一步一步地向您展示如何安装和创建ASENET MVC项目。另外,书中的MVC Music Store实用教程可帮助您巩同概念,为您创建满足真实需求的应用程序打下坚实的基础。

媒体推荐



    对一名ASP.NET开发人员来说,这是一个伟大的时刻!

    无论是对于已经拥有ASP.NET多年开发经验的开发人员,还是对于刚刚入门的初学者,现在都是深入学习ASP.NET MVC 3的绝佳时机。ASP.NET MVC从一开始就有很多乐趣,再加上现在又添加了很多特性,像新的Razor视图引擎、集成了NuGet包管理系统、深度整合了jQuery并且具有很强大的可扩展性。因此,使用ASP.NET MVC 3会给我们带来很多的乐趣!

    随着ASP.NET MVC新版本的发布,相对于本书的前两版而言,其内容已经变化很多,足以让我们重新编写该书。ASP.NET MVC团队成员Brad Wilson和著名的ASP.NET专家K. Scott Allen加入了我们的作者队伍。因此,我们已经有足够的能力创造一本崭新的书。加入我们会有一个有趣翔实的ASP.NET MVC 3之旅!

作者简介
作者:(美国)加洛韦(Jon Galloway) (美国)Phil Haack (美国)Brad Wilson (美国)K.Scott Allen 译者:孙远帅

加洛韦(Jon Galloway),Microsoft公司社区项目经理,主要从事于ASRNET MVC项目。他负责编写了MVC Music Store教程,并帮助组织mvcConf(一个免费的ASENET MVC社区在线会议),2010年,他游历世界为Web Camps教授MVC课程。Jon曾经供职于Vertigo SoRware,在那里,他主要负责一些Microsoft会议网站、支持High Profile的Silverlight视频播放器,还有MIX主题演示。在这之前,他曾在很多Web开发公司任职,从朝气蓬勃的创业公司到财富500强企业。
Phil Haack是一名高级项目经理,和ASENET团队一起从事于ASENET MVC项目。在加入Microsoft公司以前,Phil做过代码搜索引擎的产品经理,做过在线游戏公司的开发经理,还做过一个很受欢迎的西班牙语的电视网络的高级架构设计师,除此之外,他还做过其他一些疯狂的职业。作为一个代码“瘾君子”,Phil Haack喜欢设计软件。他不仅喜欢编写软件,而且喜欢撰写关于软件和软件管理的博客。
Brad Wilson是Microsoft公司的一名高级软件开发工程师,在Wleb平台和工具(Web Platform and Tools)团队从事于ASENET MVC项目。在2005年,他加入了Microsoft公司的模式和实践(Pattems and Practices)团队,同时也在构建CodePlex开源托管站点团队中工作。在加入Microsoft公司之前的20年里,他就已经在各种软件公司做过开发人员、架构师、团队组长和CTO(首席技术官)。他也是xUnit.net开源开发测试框架的作者James Newkirk的合作作者。自从2001年,他就积极地编写博客,主要讲解一些ASENET主题。
K.Scott Allen是OdeToCode有限责任公司的创始人。Scott为世界各地的客户提供定制开发、咨询和指导服务。

目录
第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 3的发展历程
1.1.5 Razor视图引擎
1.1.6 验证的改善
1.1.7 强大的JavaScript支持
1.1.8 高级功能
1.1.9 ASP.NEI’MVC 3特性总结
1.2 创建ASP.NETMVC 3应用程序
1.2.1 创建ASP.NET MVC 3应用程序的软件要求
1.2.2 安装ASP.NET MVC 3
1.2.3 创建ASP.NETMVC 3应用程序
1.2.4 New ASP.NET MVC 3 Project对话框
1.3 ASP.NET MVC应用程序的结构
1.4 小结
第2章 控制器
2.1 控制器的角色
2.2 控制器简史
2.3 示例应用程序:MVC Music Store
2.4 控制器基础
2.4.1 简单示例:Home Controller
2.4.2 创建第一个(非常简单的)控制器
2.4.3 控制器操作中的参数 ”
2.5 小结
第3章 视图
3.1 视图的作用
3.2 指定视图
3.3 强类型视图
3.4 视图模型
3.5 添加视图
3.5.1 Add vieW对话框中的选项
3.5.2 自定义T4视图模板
3.6 Razor视图引擎
3.6.1 Razor的概念
3.6.2 代码表达式
3.6.3 Html编码
3.6.4 代码块
3.6.5 Razor语法示例
3.6.6 布局
3.6.7 ViewStart
3.7 指定分部视图
3.8 视图引擎
3.8.1 配置视图引擎
3.8.2 查找视图
3.8.3 视图本身
3.8.4 其他的视图引擎
3.9 新的视图引擎还是新的ActionResult
3.10 小结
第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.4.3 显式模型绑定
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.RadioBuRon
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 Hiddenlnput
6.4 小结
第7章 应用程序的安全性
7.1 使用Authorize特性登录
7.1.1 保护控制器操作
7.1.2 Authorize特性在表单身份验证、AccountController控制器中的用法
7.1.3 Intranet Application模板中的Windows Authentication
7.1.4 整个控制器的安全性
7.2 要求角色成员使用Authorize特性
7.3 扩展角色和成员
7.4 Web应用程序中的安全向量
7.4.1 威胁:跨站脚本
7.4.2 威胁:跨站请求伪造
7.4.3 威胁:cookie盗窃
7.4.4 威胁:重复提交
7.4.5 威胁:开放重定向
7.5 适当的错误报告和堆栈跟踪
7.5.1 使用配置转换
7.5.2 使用Retail部署配置
7.5.3 使用专门的错误日志系统
7.6 安全回顾和有用资源
7.7 小结
第8章 AJAX
8.1 jQuery
8.1.1 jQuery的特性
8.1-2非侵入式JavaScript
8.1.3 jQuery的用法
8.2 AJAX辅助方法
8.2.1 AJAX的ActionLink方法
8.2.2 HTML 5特性
8.2.3 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和jQuery模板
8.5 提高AJAX性能
8.5.1 使用内容分发网络
8.5.2 脚本优化
8.6 小结
第9章 路由机制
9.1 理解URL
9.2 路由机制概述
9.2.1 对比路由和URL重写
9.2.2 路由的定义
9.2.3 命名路由
9.2.4 MVC区域
9.2.5 Catch-All参数
9.2.6 段中的多个URL参数
9.2.7 StopRoutingHandler和IgnoreRoute
9.2.8 路由的调试
9.2.9 揭秘路由如何生成URL
9.3 揭秘路由如何绑定到操作
9.3.1 高层次请求的路由管道
9.3.2 路由数据
9.4 自定义路由约束
9.5 Web Forms和路由机制
9.6 小结
第10章 NuGet
10.1 NuGet概述
10.2 NUGET安装
10.3 以包的形式添加库
10.3.1 查找包
10.3.2 安装包
10.3.3 更新包
10.3.4 最近使用的包
10.4 创建包
10.4.1 文件夹结构
10.4.2 NuSpec文件
10.4.3 元数据
10.4.4 依赖库
10.4.5 指定要包含的文件
10.4.6 工具
10.4.7 框架和轮廓定位
10.5 发布包
10.5.1 发布到NuGet.org
10.5.2 使用NuGet.exe发布包
10.5.3 包浏览器的用法
10.5.4 托管私有的NuGet供应库
10.6 小结
第11章 依赖注入
11.1 软件设计模式概述
11.1.1 设计模式——控制反转模式
11.1.2 设计模式——服务定位器
11.1.3 设计模式一依赖注入
11.2 依赖解析器的用法
11.2.1 单一注册服务
11.2.2 复合注册服务
11.2.3 创建任意对象
11.3 小结
第12章 单元测试
12.1 单元测试和测试驱动开发的意义
12.1.1 单元测试的定义
12.1.2 测试驱动开发的定义
12.2 创建单元测试项目
12.2.1 检查默认单元测试
12.2.2 只测试自己编写的代码
12.3 单元测试用于ASP.NET MVC应用程序的技巧和窍门
12.3.1 控制器测试
12.3.2 路由测试
12.3.3 验证测试
12.4 小结
第13章 扩展ASP.NET MVC
13.1 模型扩展
13.1.1 把请求数据转化为模型
13.1.2 用元数据描述模型
13.1.3 验证模型
13.2 视图扩展
13.2.1 自定义视图引擎
13.2.2 编写HTML辅助方法
13.2.3 编写Razor辅助方法
13.3 控制器扩展
13.3.1 操作选择
13.3.2 操作过滤器
13.3.3 提供自定义结果
13.4 小结
第14章 高级主题
14.1 高级Razor
14.1.1 模板化的Razor委托
14.1.2 视图编译
14.2 高级基架
14.2.1 自定义T4代码模板
14.2.2 NuGet包MvcScaffolding
14.2.3 更新的Add Controller对话框选项
14.2.4 使用库模板
14.2.5 添加基架器
14.2.6 额外资源
14.3 高级路由
14.3.1 RouteMagic
14.3.2 可编辑的路由
14.4 模板
14.4.1 默认模板
14.4.2 自定义模板
14.5 高级控制器
14.5.1 定义控制器:IController接口
14.5.2 ControllerBase抽象基类
14.5.3 控制器类和操作
14.5.4 ActionResult
14.5.5 操作调用器
14.5.6 使用异步控制器操作
14.6 小结

文摘
版权页:

ASP.NET MVC 3 高级编程

插图:

ASP.NET MVC 3 高级编程

1.1.7 强大的JavaScript支持
JavaScript是任何现代Web应用程序的重要组成部分。依照目前最好的JavaScript集成标准,ASENET MVC 3中添加了一些客户端开发的重要支持。想更多地了解ASP.NET MVC 3中新JavaScript的相关特性,请参阅第8章内容。
1.非侵入式JavaScript
非侵入式JavaScript是一个一般术语,它表达了一个哲理,类似于术语表述性的状态转移(Representational State Transfer,REST)。非侵入式JavaScript的高层次描述就是不影响网页标记。例如,非侵入式JavaScript链接页面元素是通过元素的ID或类而不是通过事件特性(例如onclick和onsubmit)。
当认为HTML文档只是一个文档时,非侵入式JavaScript有很大的意义。它有语义的意义,所有这些(像标签结构和元素特性等)应该有一个精确的含义。为了促进交互(即使用_doPostBack)而让JavaScript遍布整个页面是不利于文档内容的。
ASENET MVC 3采用两种方式支持非侵入式JavaScript,分别是:
Ajax 辅助类(比如Ajax.ActionLink和Ajax.BeginForm)结合利用扩展的特(data一特性)和jQuery技术为FORM标签提供简洁的标记
Ajax验证不再将验证规则以一块(JSON数据有时很大)发出,而是应用data.特性发出。尽管从技术上考虑ASP.NET MVC 2的验证系统相当不唐突,但是ASP.NET MVC 3系统更加不唐突一一标记更加轻量化,data.特性的使用使得应用jQuery和其他JavaScript库的验证信息的利用和重用更加简单。
2.jQuery验证
ASENET MVC 2用jQuery进行传送,而用MicrosoftAjax进行验证。ASENET MVC 3通过将验证支持转换到流行的jQuery验证插件上运行,完成了使用jQuery的Ajax支持的过渡。非侵入式JavaScript支持(前面讨论过)和使用标准插件系统的jQuery验证的结合使得验证极其灵活,同时还可从强大的jQuery社区中获得益处。
目前在新的ASENET MVC 3工程项目中,客户端验证默认是打开的,并且可以通过使用web.config设置或在global.asax中编码(以备项目升级)使其在整个站点中启用。
3.JSON绑定
ASP.NET MVC 3通过新的JsonValueProviderFactory支持JSON(JavaScript Object Notation)绑定,这样可以使您的操作方法接受和模型绑定(model-bind)JSON格式的数据。这一点在高级的AjaX应用(像客户端模板和需要将数据传回服务器的数据绑定)中非常有用。
1.1.8高级功能
到目前为止,我们已经谈到了ASENET MVC 3如何完成很多像视图模板和验证那样简单但很费脑筋的任务。ASP.NT MVC 3通过支持依赖项解析和全局操作过滤器在简化比较复杂的应用程序级任务方面也取得了一些大的进展。
1.依赖项解析
ASP.NET MVC 3引入了一个全新的概念,称作依赖解析器(dependency resolver),从而大大简化了在应用程序中依赖注入的使用。这使得分离应用程序组件更加容易,从而使组件更容易配置和测试。
下面列举的方案已经添加了对依赖解析器的支持:
控制器(注册和注入控制器工厂,注入控制器)
视图(注册和注入视图引擎,向视图页面注入依赖关系)
操作过滤器(定位和注入过滤器)
模型绑定器(注册和注入)
模型验证提供器(注册和注入)
模型元数据提供器(注册和注入)
值提供器(注册和注入)
这是一个大的话题,本书将在第ll章中进行专门讲解。
2.全局操作过滤器
ASENET MVC 2的操作过滤器可以提供一段执行代码的钩子,使得该段代码可以在一个方法执行之前或之后运行。这个功能可以通过自定义特性实现,自定义的特性可以应用于控制器操作或者整个控制器。ASENEI’MVC 2就带有一些过滤器,像Authorize特性。
ASENET MVC 3运用适用于程序中所有操作方法的全局操作过滤器扩展了这一功能,这对于处理应用程序基础结构问题,像错误处理和日志记录尤其有用。
1.1.9 ASP.NET MVC 3特性总结
这些特性很强大,如果由我设计产品包装盒的话,我会将这两句话写在上面:
ASP.NET MVC现在变得如此简单,如果您以前推迟了ASP.NET MVC的学习,那么现在您就没有理由再推脱了
如果您已经使用ASP.NET MVC一段时间了,那么ASP.NET MVC 3将会使您的最难代码变得不必要。
这些是一个快速的介绍性总结,这些特性以及其他的ASENE'I’MVC 3的特性会涵盖在全书中。如果您想要关于ASENET MVC 3的在线新特性总结,请查阅http://asp.net/mvc/mvc3#overview上的内容。

内容简介
《ASP.NET MVC 3 高级编程》主要内容是描述视图的概念,探讨Razor语法、NuGet、单元测试等,解释控制器在MVC框架中的作用,以及模型在绑定和数据访问策略中发挥的作用,演示如何显示和处理表单,涵盖添加到April 2011 Tools Update中的新特性,如基架和HTML5项目模板,展示在客户端和服务器端验证模型的过程给出利用成员资格、援权和安全特性的忠告,讲解将TDD应用于ASP.NET MVC的方法。

购买书籍

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

PDF电子书下载地址

相关书籍

搜索更多