出版社:清华大学出版社
年代:2010
定价:49.9
本书探讨了关于ASP.NET MVC所带来的独特体验,内容包括MVC的模式以及ASP.NET MVC是如何实现该模式的、MVC的高级技术以及扩充架构、标准ASP.NET MVC应用程序的结构、ASP.NET MVC和ASP.NET Web Forms间的区别,最后介绍了一些指导原则和最佳实践,并展望了ASP.NET 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
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时所需的思维转换以及一旦转移后所获得的收益。
本书由ASP.NET小组成员编写,作者Scott Guthrie首先提供了一个说明如何构建应用程序的完整演示,然后深入介绍MVC的基本概念和历史,并快速过渡到讨论ASP.NET MVC模式如何实现这些概念。在学习本书的过程中,您将理解在从传统的ASP.NET Web Forms转移到ASP.NET MVC时所需的思维转换以及一旦转移后所获得的收益。
(美) 艾伦等, 著
(美) 巴勒莫 (Palermo,J.) , (美) 史凯尔曼 (Scheirman,B.) , (美) 博加德 (Boggard,J.) , 著
(美) 伊夫杰 (Eujen,B.) 等, 著
(美) 荷马 (Homer,A.) , (美) 苏士曼 (Sussman,D.) , 著
(美) 阿德斯坦尼等, 著
(美) 伊夫杰 (Evjen,B.) 等, 著
(美) 艾维耶 (Evjen,B.) , 等著
(意) 埃斯帕斯托 (Esposito,D.) , 著
(美) 伊夫杰 (Evjen,B.) , (美) 汉森门 (Hanselman,S.) , (美) 内达 (Rader,D.) , 著