《ASP.NET MVC 1.0高级编程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)康纳利著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302222439
  • 页数:422 页
图书介绍:本书探讨了关于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.1 File|New Project 5

1.1.1 查看NerdDinner目录的结构 6

1.1.2 运行NerdDinner应用程序 9

1.1.3 测试NerdDinner应用程序 11

1.2 创建数据库 12

1.2.1 创建新的SQL Server Express数据库 12

1.2.2 在数据库中创建表 13

1.2.3 建立两个表之间的外键关系 16

1.2.4 向表中添加数据 18

1.3 构建模型 19

1.3.1 LINQ to SQL 19

1.3.2 向项目中添加LINQ to SQL类 19

1.3.3 通过LINQ to SQL创建数据模型类 21

1.3.4 NerdDinnerDataContext类 23

1.3.5 创建DinnerRepository类 24

1.3.6 使用DinnerRepository类进行检索、更新、插入和删除 26

1.3.7 使用Model类集成验证和业务规则逻辑 29

1.4 控制器和视图 33

1.4.1 添加DinnersController控制器 34

1.4.2 将索引和细节动作的方法添加到DinnersController类中 35

1.4.3 理解ASP.NET MVC的路由 36

1.4.4 使用来自DinnersController的DinnerRepository 38

1.4.5 通过控制器使用视图 38

1.4.6 实现NotFound视图模板 40

1.4.7 实现Details视图模板 42

1.4.8 实现Index视图模板 47

1.4.9 基于约定的命名和\Views目录结构 52

1.5 表单场景的创建、更新、删除 54

1.5.1 通过DinnersController处理URL 54

1.5.2 实现HTTP-GET编辑动作方法 55

1.5.3 Html.BeginForm和Html.TextBox的Html辅助方法 59

1.5.4 实现HTTP-POST编辑动作方法 60

1.5.5 处理编辑错误 64

1.5.6 理解ModelState和验证的HTML辅助方法 65

1.5.7 使用AddRuleViolations辅助方法 68

1.5.8 Edit动作方法的完整实现 68

1.5.9 实现HTTP-GET创建动作方法 69

1.5.10 实现HTTP-POST创建动作方法 72

1.5.11 实现HTTP-GET删除动作方法 75

1.5.12 实现HTTP-POST删除动作方法 78

1.5.13 模型绑定安全性 79

1.5.14 CRUD小结 81

1.6 ViewData和ViewModel 84

1.6.1 将数据从控制器传到视图模板中 84

1.6.2 使用ViewData字典 84

1.6.3 使用ViewModel模式 86

1.6.4 自定义的ViewModel类 89

1.7 Partials页面和Master页面 90

1.7.1 回顾Edit和Create视图模板 90

1.7.2 使用Partial视图模板 91

1.7.3 使用局部视图模板理清代码 95

1.7.4 Master页面 95

1.8 分页支持 99

1.8.1 Index()动作方法 99

1.8.2 理解IQueryable〈T〉 100

1.8.3 在URL中添加page值 101

1.8.4 添加页面导航用户界面 104

1.9 身份验证和授权 107

1.9.1 理解身份验证和授权 107

1.9.2 表单身份验证和AccountController 108

1.9.3 使用[Authorize]过滤器对/Dinners/Create的URL地址进行授权 111

1.9.4 创建Dinners时使用User.Identity.Name属性 112

1.9.5 在编辑宴会记录时使用User.Identity.Name属性 113

1.9.6 显示/隐藏编辑和删除链接 115

1.10 通过AJAX实现RSVP支持 116

1.10.1 指明用户是否已经回复 116

1.10.2 实现Register动作方法 119

1.10.3 使用AJAX调用Register动作方法 119

1.10.4 添加jQuery动画 122

1.10.5 简化-重构RSVP局部视图 123

1.11 集成AJAX地图 124

1.11.1 创建Map局部视图 124

1.11.2 创建Map.js实用程序库 125

1.11.3 将地图与创建和编辑表单集成 127

1.11.4 将地图与Details视图集成 131

1.11.5 在数据库和仓库中实现位置搜索 133

1.11.6 实现基于JSON的AJAX搜索动作方法 136

1.11.7 使用jQuery调用基于JSON的AJAX方法 137

1.12 单元测试 141

1.12.1 进行单元测试的原因 142

1.12.2 NerdDinner.Tests项目 142

1.12.3 为Dinner模型类创建单元测试 143

1.12.4 运行测试 146

1.12.5 创建DinnersController单元测试 147

1.12.6 依赖注入 148

1.12.7 提取IDinnerRepository接口 149

1.12.8 更新DinnersController以支持构造函数注入 150

1.12.9 创建FakeDinnerRepository类 151

1.12.10 在单元测试中使用FakeDinnerRepository 153

1.12.11 创建Edit动作的单元测试 155

1.12.12 模仿User.Identity.Name属性 156

1.12.13 测试UpdateModel()方法 158

1.12.14 测试小结 160

1.13 NerdDinner应用程序小结 160

第2章 MVC与ASP.NET 163

2.1 什么是模型-视图-控制器 163

2.2 当今Web上的MVC 165

2.2.1 Ruby on Rails 166

2.2.2 Django和Python 166

2.2.3 Spring、Struts和Java 167

2.2.4 Zend架构和PHP 167

2.2.5 MonoRail 168

2.3 新宠ASP.NET MVC 168

2.3.1 为方法服务而不是文件 169

2.3.2 ASP.NET MVC是Web Forms 4.0吗 169

2.3.3 为什么不是Web Forms 170

2.3.4 Web Forms的成本/收益 171

2.3.5 对ASP.NET MVC惧怕吗 171

2.4 小结 172

第3章 ASP.NET>ASP.NET MVC 175

3.1 抽象:Web Forms擅长的领域 175

3.1.1 基本的Web Forms应用程序 176

3.1.2 事件的重要性 179

3.2 遗漏:Web Forms不十分适合之处 181

3.2.1 ViewState 182

3.2.2 控制尖括号的使用 182

3.2.3 客户的ID 183

3.2.4 测试 183

3.3 ASP.NET MVC的基础 183

3.3.1 管弦乐编曲与作曲 184

3.3.2 关注点分离的含义 184

3.3.3 实现可维护性的方法 185

3.4 可测试性 185

3.5 对ASP.NET MVC的通常反应 187

3.5.1 它看起来有点像1999年的经典ASP 187

3.5.2 谁移动了〈asp:Cheese runat=“server”}〉 187

3.5.3 另一种Web架构 188

3.6 为什么“(ASP.NET>ASP.NET MVC)==True” 188

3.6.1 约定胜于配置 190

3.6.2 第一、二、三个请求 193

3.6.3 请求的生命周期 196

3.7 小结 196

第4章 路由和URL 197

4.1 路由选择概述 198

4.1.1 与URL重写的比较 198

4.1.2 路由的定义 199

4.1.3 命名路由 205

4.1.4 Catch-All参数 206

4.1.5 StopRoutingHandler 207

4.1.6 深入分析:路由如何生成URL 208

4.2 深入分析:路由如何将URL与动作联系起来 215

4.2.1 高层次请求的路由选择管道 215

4.2.2 路由匹配 216

4.3 具有自定义约束的高级路由选择 216

4.4 路由的可扩充性 217

4.5 通过Web表单使用路由选择 221

4.6 小结 223

第5章 控制器 225

5.1 控制器的发展史 225

5.2 控制器的定义:IController接口 227

5.3 ControllerBase抽象基类 229

5.4 控制器类和动作 229

5.5 ActionResult 233

5.5.1 动作结果的类型 234

5.5.2 动作结果的辅助方法 238

5.5.3 隐式的动作结果 238

5.6 动作调用者 240

5.6.1 动作如何映射到方法中 240

5.6.2 映射参数 243

5.6.3 调用动作 243

5.6.4 将数据传递给动作:模型绑定器 243

5.6.5 用户输入的简单说明 247

5.7 小结 249

第6章 视图 251

6.1 视图的职责 251

6.2 视图不应该做的事情 253

6.3 指定一个视图 253

6.4 强类型视图 255

6.5 HTML辅助方法 256

6.5.1 HtmlHelper类和扩展方法 257

6.5.2 使用HTML辅助方法 257

6.6 视图引擎 266

6.6.1 配置视图引擎 267

6.6.2 选择视图引擎 267

6.6.3 寻找视图 268

6.6.4 视图本身 268

6.6.5 可替换的视图引擎 269

6.7 新的视图引擎还是新的ActionResult 275

6.8 小结 276

第7章 AJAX 277

7.1 AJAX在什么情况下显得很酷 278

7.2 AJAX不适用的情形 278

7.3 AJAX示例 280

7.3.1 处理禁用的脚本 280

7.3.2 将Partial用于呈现 285

7.3.3 关于Microsoft ASP.NET AJAX的其他一些问题 288

7.3.4 在提交表单时更新HTML元素 290

7.3.5 自动完成文本框 292

7.3.6 通过Microsoft ASP.NET AJAX实现自动完成 292

7.3.7 使用Selectbox过滤数据 295

7.3.8 用jQuery实现模态弹出窗口 297

7.3.9 模态弹出的代码 298

7.3.10 Rating控件 299

7.4 小结 303

第8章 过滤器 305

8.1 包含在ASP.NET MVC中的过滤器 305

8.1.1 Authorize 305

8.1.2 OutputCache 308

8.1.3 异常过滤器 310

8.1.4 自定义的过滤器 311

8.2 编写自定义的动作过滤器 315

8.3 编写自定义的授权过滤器 317

8.4 编写自定义的异常过滤器 319

8.5 过滤器的排序 320

8.6 过滤器的命名 321

8.7 小结 323

第9章 保护应用程序的安全 325

9.1 这是一场战争 326

9.2 武器 331

9.2.1 垃圾邮件 331

9.2.2 案例研究:通过Srizbi和Storm僵尸网络从罪恶中谋取利益 332

9.2.3 Digital Stealth Ninja网络 333

9.3 威胁:跨站点脚本(XSS) 334

9.3.1 被动注入 334

9.3.2 主动注入 336

9.3.3 阻止XSS 338

9.3.4 Html.AttributeEncode和Url.Encode 338

9.4 威胁:跨站点请求伪造 339

9.5 威胁:cookie盗窃 343

9.6 通过HttpOnly防止cookie偷窃 344

9.7 适当的错误报告和堆栈跟踪 345

9.8 保护控制器,而不是路由 345

9.9 使用[NonAction]保护公有方法 347

9.10 白单表单的绑定 347

9.11 小结:一切取决于自己 348

第10章 使用ASP.NET MVC进行测试驱动开发 349

10.1 TDD简介 350

10.1.1 TDD的含义 350

10.1.2 编写好的单元测试 353

10.1.3 编写测试的好处 357

10.1.4 如何入手 357

10.2 将TDD运用到ASP.NET MVC由 357

10.2.1 测试路由 358

10.2.2 测试控制器 360

10.2.3 重定向到另一个动作 360

10.2.4 测试视图辅助方法 361

10.2.5 测试视图 364

10.3 小结 365

第11章 可测试的设计模式 367

11.1 关注可测试性的原因 367

11.1.1 预先大量设计 368

11.1.2 敏捷软件开发 369

11.2 希望编写可测试的代码 370

11.3 使用测试证明所做的工作 371

11.4 为可测试性设计应用程序 371

11.4.1 用接口保证应用程序的未来 371

11.4.2 单一职责原则 373

11.4.3 避免使用单态和静态方法 373

11.5 可测试的数据访问 376

11.5.1 创建模型 377

11.5.2 仓库模式的详细介绍 379

11.6 通过服务层实现业务逻辑 383

11.6.1 服务变得混乱 385

11.6.2 局部解决方案:手动设置控制器的依赖 386

11.7 小结 392

第12章 将Web Forms和MVC相结合 395

12.1 如何变得可行 395

12.2 将MVC包含到已有的Web Forms应用程序中 396

12.2.1 第1步:引用必要的库 396

12.2.2 第2步:创建必要的目录 397

12.2.3 第3步:更新Web.config 398

12.3 向已有的ASP.NET MVC应用程序中添加Web Forms 400

12.3.1 最简单的部分:什么都不做 401

12.3.2 如果不采用默认路由 403

12.3.3 使用System.Web.Routing路由到Web Forms 403

12.4 在Web Forms和MVC之间共享数据 404

12.4.1 使用HTTP POST 404

12.4.2 使用ASP.NET会话 405

12.4.3 使用跨页面提交 406

12.4.4 使用TempData 408

12.5 从Web Forms迁移到MVC 409

12.5.1 第1步:创建带有测试项目的空的ASP.NET MVC项目 409

12.5.2 第2步:实现结构 410

12.5.3 第3步:添加图像和式样 413

12.5.4 第4步:建立路由选择和控制器 414

12.5.5 第5步:替换复杂的服务器控件 418

12.5.6 第6步:上传文件并使用图像 420

12.6 小结 422