书籍详情
ASP.NET MVC 1.0高级编程
作者:(美)康纳利 等著,冯飞 译
出版社:清华大学出版社
出版时间:2010-03-01
ISBN:9787302222439
定价:¥58.00
购买这本书可以去
内容简介
ASP.NET MVC架构是以一些核心原则(可扩展性、可测试性和关注点分离)为指导从头设计而成的。该架构添加了各种约定以帮助开发人员走向成功,并且提供了适合于Web工作方式的流线型开发体验。对于想剥离抽象层并接近事物实质的开发人员来说,ASP.NET MVC就很合适。对于特别关心架构如何组合在一起的开发人员来说,ASP.NET MVC也极具扩展性,几乎允许对其任何部分进行定制,甚至可按个人喜好整体替换。本书由ASP.NET小组成员编写,Scott Guthrie首先提供了一个说明如何构建应用程序的完整演示,然后深入介绍MVC的基本概念和历史,并快速过渡到讨论ASP.NET MVC模式如何实现这些概念。在学习本书的过程中,您将理解在从传统的ASP.NET Web Forms转移到ASP.NET MVC时所需的思维转换以及一旦转移后所获得的收益。
作者简介
Rob Conery,在Microsoft的ASP.NET小组中工作。他是SubSonic的创建者,也是Commerce Starter Kit(一个免费的.NET开放源代码的电子商务平台)的主要设计师。他和他的妻子以及两个)L(Maddy和Ruby)住在夏威夷的考艾岛。Scott Guthrie,是Microsoft的.NET Developer Division的副总裁。他所率领的开发小组主要负责交付Microsoft Visual Studio开发工具以及用于构建客户端和Wleb应用程序的Microsoft.NET架构技术。作为.NET项目的主创人员,Guthrie自1999年以来就一直在ⅥsualStudio和.NET架构的设计和开发中扮演着非常重要的角色。Guthrie还负责Microsoft的wleb服务器平台和开发工具小组的工作。最近,他还促成了Silverlight的开发,silverlight是一款跨浏览器,是用来交付下一代媒体经验以及wleb上丰富的Intemet应用程序的跨平台插件。现在,Guthrie直接管理的开发小组有很多,这些小组分别负责构建公共语言运行厍(CLR)、ASENET、Silverlight、Windows Presentation Foundation(WPF)、IIS、CommerceServer以及用于Web、客户端和Silverlight开发的Visual Studio Tools。Guthrie毕业于杜克大学的计算机科学专业。Phil Haack,是ASP.NET小组的高级编程经理,主要负责ASENET MVC项目。在加入Microsoft之前,Phil Haack曾是一个代码搜索引擎的产品经理、一家网络游戏公司的开发经理,也曾是流行西班牙语电视网络的高级设计师。作为一名编码的狂热者,Phil Haack喜欢制作软件。他不仅仅喜欢编写软件,而且热衷于在他的博客(http:∥haacked.com)上撰写关于软件和软件管理的内容。在闲暇时间,Phil Haack向各种开放源代码的项目投稿,他是Subtext博客引擎项目的创建人,这个项目当然也正在使用ASENET MVC来重写。
目录
第1章 NerdDinner
1.1 FileINewProject
1.1.1 查看NerdDinner目录的结构
1.1.2 运行NerdDinner应用程序
1.1.3 测试NerdDinner应用程序
1.2 创建数据库
1.2.1 创建新的SQLServer Express数据库
1.2.2 在数据库中创建表
1.2.3 建立两个表之间的外键关系
1.2.4 向表中添加数据
1.3 构建模型
1.3.1 LmQtoSQL
1.3.2 向项目中添加LINQto SQL类
1.3.3 通过LrNQtoSQL创建数据模型类
1.3.4 NerdDinnerDataContext类
1.3.5 创建DinnerRepository类
1.3.6 使用DinnerRepository类进行检索、更新、插入和删除
1.3.7 使用Model类集成验证和业务规则逻辑
1.4 控制器和视图
1.4.1 添加DinnersController控制器
1.4.2 将索引和细节动作的方法添加到DinncrsConollcr类中
1.4.3 理解ASRNETMVC的路由
1.4.4 使用来自DinnersController的DinnerRepository:
1.4.5 通过控制器使用视图
1.4.6 实现NotFound视图模板
1.4.7 实现Details视图模板
1.4.8 实现Index视图模板
1.4.9 基于约定的命名和\Views目录结构
1.5 表单场景的创建、更新、删除
1.5.1 通过DinnersController处理URL
1.5.2 实现HTTP.GET编辑动作方法
1.5.3 Html.BeginForm和Html.TextBox的Html辅助方法
1.5.4 实现HTTP.POST编辑动作方法
1.5.5 处理编辑错误
1.5.6 理解ModelState和验证的HTML辅助方法
1.5.7 使用AddRuleViolations辅助方法
1.5.8 Edit动作方法的完整实现
1.5.9 实现HTTP.GET创建动作方法
1.5.10 实现HTTP.POST创建动作方法
1.5.11 实现HTTP.GET删除动作方法
1.5.12 实现HTrP.POST删除动作方法
1.5.13 模型绑定安全性
1.5.14 CRUD小结
1.6 ViewData和ViewModel
1.6.1 将数据从控制器传到视图模板中
1.6.2 使用ViewData字典
1.6.3 使用ViewModel模式
1.6.4 自定义的ViewModel类
1.7 Partials页面和Master页面
1.7.1 回顾Edit和Create视图模板
1.7.2 使用Partial视图模板
1.7.3 使用局部视图模板理清代码
1.7.4 Master页面
1.8 分页支持
1.8.1 Index()动作方法
1.8.2 理解IQueryable
1.8.3 在URL中添加page值
1.8.4 添加页面导航用户界面
1.9 身份验证和授权
1.9.1 理解身份验证和授权
1.9.2 表单身份验证和AccountController
1.9.3 使用fAuthorize]过滤器对/Dinners/Create的URL地址进行授权
1.9.4 创建Dinners时使用User.Identity.Name属性
1.9.5 在编辑宴会记录时使用User.Identity.Name属性
1.9.6 显示/隐藏编辑和删除链接
1.10 通过AJAX实现RSVP支持
1.10.1 指明用户是否已经回复
1.10.2 实现Register动作方法
1.10.3 使用AJAX调用Register动作方法
1.10.4 添加jQuery动画
1.10.5 简化.重构RSVP局部视图
1.11 集成AJAX地图
1.11.1 创建Map局部视图
1.11.2 创建Map.js实用程序库
1.11.3 将地图与创建和编辑表单集成
1.11.4 将地图与Details视图集成
1.11.5 在数据库和仓库中实现位置搜索
1.11.6 实现基于JSON的AJAx搜索动作方法
1.11.7 使用jQuery调用基于JSON的AJAX方法
1.12 单元测试
1.12.1 进行单元测试的原因
1.12.2 NerdDinner.Tests项目
1.12.3 为Dinner模型类创建单元测试
1.12.4 运行测试
1.12.5 创建DinnersController单元测试
1.12.6 依赖注入
1.12.7 提取IDinnerRepository接口
1.12.8 更新DinnersController以支持构造函数注入
1.12.9 创建FakeDinnerRepository类
1.12.10 在单元测试中使用FakeDinnerRepository
1.12.11 创建Edit动作的单元测试
1.12.12 模仿User.Identity.Name属性
1.12.13 测试UpdateModel0方法
1.12.14 测试小结
1.13 NerdDinner应用程序小结
第2章 MVC与ASP.NET
2.1 什么是模型.视图.控制器
2.2 当今Wleb上的MVC
2.2.1 Ruby0nRails
2.2.2 Django和Vython._
2.2.3 Spring、Struts和Java
2.2.4 Zend架构和PHP
2.2.5 MonoRail
2.3 新宠ASP.NETMVC
2.3.1 为方法服务而不是文件
2.3.2 ASENETMVC是WebForms4.0吗
3.3 为什么不是WebForms
2.3.4 WebForms的成本/收益
2.3.5 对ASENETMVC惧怕吗
2.4 小结
第3章 ASPNET>ASPNETMVC
3.1 抽象:WebForm$擅长的领域
3.1.1 基本的WebForms应用程序
3.1.2 事件的重要性
3.2 遗漏:WlebForms不十分适合之处
3.2.1 ViewState
3.2.2 控制尖括号的使用
3.2.3 客户的ID
3.2.4 测试
3.3 ASP.NETMVC的基础
3.3.1 管弦乐编曲与作曲
3.3.2 关注点分离的含义
3.3.3 实现可维护性的方法
3.4 可测试性
3.5 对ASP.NETMVC的通常反应
3.5.1 它看起来有点像1999年的经典.ASP
3.5.2 谁移动了
3.5.3 另一种Web架构
3.6 为什么“(ASP.NET>ASP.NETMVC)=me
3.6.1 约定胜于配置
3.6.2 第一、二、三个请求
3.6.3 请求的生命周期
3.7 小结
第4章 路由和URL
4.1 路由选择概述
4.1.1 与URL,重写的比较
4.1.2 路由的定义
4.1.3 命名路由
4.1.4 Catch-All参数
4.1.5 StopRoutingHandler
4.1.6 深入分析:路由如何生成URL
4.2 深入分析:路由如何将URL与动作联系起来
4.2.1 高层次请求的路由选择管道
4.2.2 路由匹配
4.3 具有自定义约束的高级路由选择
4.4 路由的可扩充性
4.5 通过wleb表单使用路由选择
4.6 小结
第5章 控制器
5.1 控制器的发展史
5.2 控制器的定义:IController接口
5.3 ControllerBase抽象基类
5.4 控制器类和动作
5.5 ActionResult
5.5.1 动作结果的类型
5.5.2 动作结果的辅助方法
5.5.3 隐式的动作结果
5.6 动作调用者
5.6.1 动作如何映射到方法中
5.6.2 映射参数
5.6.3 调用动作
5.6.4 将数据传递给动作:模型绑定器
5.6.5 用户输入的简单说明
5.7 小结
第6章 视图
6.1 视图的职责
6.2 视图不应该做的事情
6.3 指定一个视图
6.4 强类型视图
6.5 HTML辅助方法
6.5.1 HtmlHelper类和扩展方法
6.5.2 使用HTML辅助方法
6.6 视图引擎
6.6.1 配置视图引擎
6.6.2 选择视图引擎
6.6.3 寻找视图
6.6.4 视图本身-?:
6.6.5 可替换的视图引擎
6.7 新的视图引擎还是新的ActiOhResult
6.8 小结
第7章 AJAX
7.1 AJAx在什么情况下显得很酷
7.2 AJAX不适用的情形
7.3 AJAX示例
7.3.1 处理禁用的脚本
7.3.2 将Partial用于呈现
7.3.3 关于Microsoft.ASENETAJAX的其他一些问题
7.3.4 在提交表单时更新HTML元素
7.3.5 自动完成文本框
7.3.6 通过MicrosoftASENE TAJAX实现自动完成
7.3.7 使用Selectbox过滤数据
7.3.8 用jQuery实现模态弹出窗口
7.3.9 模态弹出的代码
7.3.1 0Rating控件
7.4 小结
第8章 过滤器
8.1 包含在ASP.NETMVC中的过滤器
8.1.1 Authorize
8.1.2 OutputCache
8.1.3异常过滤器
8.1.4 自定义的过滤器
8.2 编写自定义的动作过滤器
8.3 编写自定义的授权过滤器
8.4 编写自定义的异常过滤器
8.5 过滤器的排序
8.6 过滤器的命名
8.7 小结
第9章 保护应用程序的安全
9.1 这是一场战争
9.2 武器
9.2.1 垃圾邮件
9.2.2 案例研究:通过Srizbi和Storm僵尸网络从罪恶中谋取利益
9.2.3 DigitalStealthNinia网络
9.3 威胁:跨站点脚本(xSS)
9.3.1 被动注入
9.3.2 主动注入
9.3.3 阻止XSS
9.3.4 Html.AttributeEncode和Url.Encode
9.4 威胁:跨站点请求伪造
9.5 威胁:cookie盗窃
9.6 通过H婶Only防止cooJkie偷窃
9.7 适当的错误报告和堆栈跟踪
9.8 保护控制器,而不是路由
……
第10章 使用 ASP.NET MVC进行测试驱动开发
第11章 可测试的设计模式
第12章 将Web Forms 和MVC
1.1 FileINewProject
1.1.1 查看NerdDinner目录的结构
1.1.2 运行NerdDinner应用程序
1.1.3 测试NerdDinner应用程序
1.2 创建数据库
1.2.1 创建新的SQLServer Express数据库
1.2.2 在数据库中创建表
1.2.3 建立两个表之间的外键关系
1.2.4 向表中添加数据
1.3 构建模型
1.3.1 LmQtoSQL
1.3.2 向项目中添加LINQto SQL类
1.3.3 通过LrNQtoSQL创建数据模型类
1.3.4 NerdDinnerDataContext类
1.3.5 创建DinnerRepository类
1.3.6 使用DinnerRepository类进行检索、更新、插入和删除
1.3.7 使用Model类集成验证和业务规则逻辑
1.4 控制器和视图
1.4.1 添加DinnersController控制器
1.4.2 将索引和细节动作的方法添加到DinncrsConollcr类中
1.4.3 理解ASRNETMVC的路由
1.4.4 使用来自DinnersController的DinnerRepository:
1.4.5 通过控制器使用视图
1.4.6 实现NotFound视图模板
1.4.7 实现Details视图模板
1.4.8 实现Index视图模板
1.4.9 基于约定的命名和\Views目录结构
1.5 表单场景的创建、更新、删除
1.5.1 通过DinnersController处理URL
1.5.2 实现HTTP.GET编辑动作方法
1.5.3 Html.BeginForm和Html.TextBox的Html辅助方法
1.5.4 实现HTTP.POST编辑动作方法
1.5.5 处理编辑错误
1.5.6 理解ModelState和验证的HTML辅助方法
1.5.7 使用AddRuleViolations辅助方法
1.5.8 Edit动作方法的完整实现
1.5.9 实现HTTP.GET创建动作方法
1.5.10 实现HTTP.POST创建动作方法
1.5.11 实现HTTP.GET删除动作方法
1.5.12 实现HTrP.POST删除动作方法
1.5.13 模型绑定安全性
1.5.14 CRUD小结
1.6 ViewData和ViewModel
1.6.1 将数据从控制器传到视图模板中
1.6.2 使用ViewData字典
1.6.3 使用ViewModel模式
1.6.4 自定义的ViewModel类
1.7 Partials页面和Master页面
1.7.1 回顾Edit和Create视图模板
1.7.2 使用Partial视图模板
1.7.3 使用局部视图模板理清代码
1.7.4 Master页面
1.8 分页支持
1.8.1 Index()动作方法
1.8.2 理解IQueryable
1.8.3 在URL中添加page值
1.8.4 添加页面导航用户界面
1.9 身份验证和授权
1.9.1 理解身份验证和授权
1.9.2 表单身份验证和AccountController
1.9.3 使用fAuthorize]过滤器对/Dinners/Create的URL地址进行授权
1.9.4 创建Dinners时使用User.Identity.Name属性
1.9.5 在编辑宴会记录时使用User.Identity.Name属性
1.9.6 显示/隐藏编辑和删除链接
1.10 通过AJAX实现RSVP支持
1.10.1 指明用户是否已经回复
1.10.2 实现Register动作方法
1.10.3 使用AJAX调用Register动作方法
1.10.4 添加jQuery动画
1.10.5 简化.重构RSVP局部视图
1.11 集成AJAX地图
1.11.1 创建Map局部视图
1.11.2 创建Map.js实用程序库
1.11.3 将地图与创建和编辑表单集成
1.11.4 将地图与Details视图集成
1.11.5 在数据库和仓库中实现位置搜索
1.11.6 实现基于JSON的AJAx搜索动作方法
1.11.7 使用jQuery调用基于JSON的AJAX方法
1.12 单元测试
1.12.1 进行单元测试的原因
1.12.2 NerdDinner.Tests项目
1.12.3 为Dinner模型类创建单元测试
1.12.4 运行测试
1.12.5 创建DinnersController单元测试
1.12.6 依赖注入
1.12.7 提取IDinnerRepository接口
1.12.8 更新DinnersController以支持构造函数注入
1.12.9 创建FakeDinnerRepository类
1.12.10 在单元测试中使用FakeDinnerRepository
1.12.11 创建Edit动作的单元测试
1.12.12 模仿User.Identity.Name属性
1.12.13 测试UpdateModel0方法
1.12.14 测试小结
1.13 NerdDinner应用程序小结
第2章 MVC与ASP.NET
2.1 什么是模型.视图.控制器
2.2 当今Wleb上的MVC
2.2.1 Ruby0nRails
2.2.2 Django和Vython._
2.2.3 Spring、Struts和Java
2.2.4 Zend架构和PHP
2.2.5 MonoRail
2.3 新宠ASP.NETMVC
2.3.1 为方法服务而不是文件
2.3.2 ASENETMVC是WebForms4.0吗
3.3 为什么不是WebForms
2.3.4 WebForms的成本/收益
2.3.5 对ASENETMVC惧怕吗
2.4 小结
第3章 ASPNET>ASPNETMVC
3.1 抽象:WebForm$擅长的领域
3.1.1 基本的WebForms应用程序
3.1.2 事件的重要性
3.2 遗漏:WlebForms不十分适合之处
3.2.1 ViewState
3.2.2 控制尖括号的使用
3.2.3 客户的ID
3.2.4 测试
3.3 ASP.NETMVC的基础
3.3.1 管弦乐编曲与作曲
3.3.2 关注点分离的含义
3.3.3 实现可维护性的方法
3.4 可测试性
3.5 对ASP.NETMVC的通常反应
3.5.1 它看起来有点像1999年的经典.ASP
3.5.2 谁移动了
3.5.3 另一种Web架构
3.6 为什么“(ASP.NET>ASP.NETMVC)=me
3.6.1 约定胜于配置
3.6.2 第一、二、三个请求
3.6.3 请求的生命周期
3.7 小结
第4章 路由和URL
4.1 路由选择概述
4.1.1 与URL,重写的比较
4.1.2 路由的定义
4.1.3 命名路由
4.1.4 Catch-All参数
4.1.5 StopRoutingHandler
4.1.6 深入分析:路由如何生成URL
4.2 深入分析:路由如何将URL与动作联系起来
4.2.1 高层次请求的路由选择管道
4.2.2 路由匹配
4.3 具有自定义约束的高级路由选择
4.4 路由的可扩充性
4.5 通过wleb表单使用路由选择
4.6 小结
第5章 控制器
5.1 控制器的发展史
5.2 控制器的定义:IController接口
5.3 ControllerBase抽象基类
5.4 控制器类和动作
5.5 ActionResult
5.5.1 动作结果的类型
5.5.2 动作结果的辅助方法
5.5.3 隐式的动作结果
5.6 动作调用者
5.6.1 动作如何映射到方法中
5.6.2 映射参数
5.6.3 调用动作
5.6.4 将数据传递给动作:模型绑定器
5.6.5 用户输入的简单说明
5.7 小结
第6章 视图
6.1 视图的职责
6.2 视图不应该做的事情
6.3 指定一个视图
6.4 强类型视图
6.5 HTML辅助方法
6.5.1 HtmlHelper类和扩展方法
6.5.2 使用HTML辅助方法
6.6 视图引擎
6.6.1 配置视图引擎
6.6.2 选择视图引擎
6.6.3 寻找视图
6.6.4 视图本身-?:
6.6.5 可替换的视图引擎
6.7 新的视图引擎还是新的ActiOhResult
6.8 小结
第7章 AJAX
7.1 AJAx在什么情况下显得很酷
7.2 AJAX不适用的情形
7.3 AJAX示例
7.3.1 处理禁用的脚本
7.3.2 将Partial用于呈现
7.3.3 关于Microsoft.ASENETAJAX的其他一些问题
7.3.4 在提交表单时更新HTML元素
7.3.5 自动完成文本框
7.3.6 通过MicrosoftASENE TAJAX实现自动完成
7.3.7 使用Selectbox过滤数据
7.3.8 用jQuery实现模态弹出窗口
7.3.9 模态弹出的代码
7.3.1 0Rating控件
7.4 小结
第8章 过滤器
8.1 包含在ASP.NETMVC中的过滤器
8.1.1 Authorize
8.1.2 OutputCache
8.1.3异常过滤器
8.1.4 自定义的过滤器
8.2 编写自定义的动作过滤器
8.3 编写自定义的授权过滤器
8.4 编写自定义的异常过滤器
8.5 过滤器的排序
8.6 过滤器的命名
8.7 小结
第9章 保护应用程序的安全
9.1 这是一场战争
9.2 武器
9.2.1 垃圾邮件
9.2.2 案例研究:通过Srizbi和Storm僵尸网络从罪恶中谋取利益
9.2.3 DigitalStealthNinia网络
9.3 威胁:跨站点脚本(xSS)
9.3.1 被动注入
9.3.2 主动注入
9.3.3 阻止XSS
9.3.4 Html.AttributeEncode和Url.Encode
9.4 威胁:跨站点请求伪造
9.5 威胁:cookie盗窃
9.6 通过H婶Only防止cooJkie偷窃
9.7 适当的错误报告和堆栈跟踪
9.8 保护控制器,而不是路由
……
第10章 使用 ASP.NET MVC进行测试驱动开发
第11章 可测试的设计模式
第12章 将Web Forms 和MVC
猜您喜欢