第1章 入門 1
1.1 ASP.NET MVC簡介 1
1.1.1 ASP.NET MVC如何適應ASP.NET 1
1.1.2 MVC模式簡介 2
1.1.3 MVC在Web框架中的應用 2
1.1.4 ASP.NET MVC 5的發展曆程 3
1.1.5 ASP.NET MVC 4概述 6
1.1.6 開源發布 9
1.2 ASP.NET MVC 5概述 9
1.2.1 One ASP.NET 10
1.2.2 新的Web項目體驗 10
1.2.3 ASP.NET Identity 10
1.2.4 Bootstrap模闆 11
1.2.5 特性路由 13
1.2.6 ASP.NET基架 13
1.2.7 身份驗證過濾器 13
1.2.8 過濾器重寫 13
1.3 安裝MVC 5和創建應用程序 13
1.3.1 ASP.NET MVC 5的軟件需求 13
1.3.2 安裝ASP.NET MVC 5 14
1.3.3 創建ASP.NET MVC 5應用程序 14
1.3.4 New ASP.NET Project對話框 15
1.4 ASP.NET MVC應用程序的結構 19
1.4.1 ASP.NET MVC和約定 21
1.4.2 約定優於配置 21
1.4.3 約定簡化通信 22
1.5 小結 22
第2章 控製器 23
2.1 控製器的角色 23
2.2 示例應用程序:MVC Music Store 25
2.3 控製器基礎 28
2.3.1 簡單示例:Home Controller 28
2.3.2 創建第一個控製器 30
2.3.3 控製器操作中的參數 33
2.4 小結 35
第3章 視圖 36
3.1 視圖的作用 37
3.2 視圖的基礎知識 37
3.3 理解視圖約定 40
3.4 強類型視圖 41
3.4.1 ViewBag的不足 41
3.4.2 理解ViewBag、ViewData和ViewDataDictionary 43
3.5 視圖模型 44
3.6 添加視圖 45
3.7 Razor視圖引擎 47
3.7.1 Razor的概念 48
3.7.2 代碼錶達式 49
3.7.3 HTML編碼 50
3.7.4 代碼塊 52
3.7.5 Razor語法示例 52
3.7.6 布局 54
3.7.7 ViewStart 56
3.8 指定部分視圖 57
3.9 小結 58
第4章 模型 59
4.1 為MVC Music Store建模 60
4.2 為商店管理器構造基架 63
4.2.1 基架的含義 63
4.2.2 基架和實體框架 64
4.2.3 執行基架模闆 66
4.2.4 執行基架代碼 71
4.3 編輯專輯 75
4.3.1 創建編輯專輯的資源 76
4.3.2 響應編輯時的POST請求 79
4.4 模型綁定 80
4.4.1 DefaultModelBinder 81
4.4.2 顯式模型綁定 82
4.5 小結 84
第5章 錶單和HTML輔助方法 85
5.1 錶單的使用 85
5.1.1 action和method特性 86
5.1.2 GET方法還是POST方法 86
5.2 HTML輔助方法 89
5.2.1 自動編碼 90
5.2.2 輔助方法的使用 91
5.2.3 HTML輔助方法的工作原理 91
5.2.4 設置專輯編輯錶單 92
5.2.5 添加輸入元素 93
5.2.6 輔助方法、模型和視圖數據 98
5.2.7 強類型輔助方法 100
5.2.8 輔助方法和模型元數據 101
5.2.9 模闆輔助方法 101
5.2.10 輔助方法和ModelState 102
5.3 其他輸入輔助方法 103
5.3.1 Html.Hidden 103
5.3.2 Html.Password 103
5.3.3 Html.RadioButton 103
5.3.4 Html.CheckBox 104
5.4 渲染輔助方法 104
5.4.1 Html.ActionLink和Html.RouteLink 104
5.4.2 URL輔助方法 105
5.4.3 Html.Partial和Html.RenderPartial 106
5.4.4 Html.Action和Html.RenderAction 107
5.5 小結 108
第6章 數據注解和驗證 109
6.1 為驗證注解訂單 110
6.1.1 驗證注解的使用 112
6.1.2 自定義錯誤提示消息及其本地化 116
6.1.3 注解的後颱原理 117
6.1.4 控製器操作和驗證錯誤 118
6.2 自定義驗證邏輯 120
6.2.1 自定義注解 120
6.2.2 IValidatableObject 123
6.3 顯示和編輯注解 124
6.3.1 Display 124
6.3.2 ScaffoldColumn 125
6.3.3 DisplayFormat 125
6.3.4 ReadOnly 125
6.3.5 DataType 126
6.3.6 UIHint 126
6.3.7 HiddenInput 126
6.4 小結 126
第7章 成員資格、授權和安全性 127
7.1 安全性:無趣、但極其重要 127
7.2 使用Authorize特性登錄 129
7.2.1 保護控製器操作 129
7.2.2 Authorize特性在錶單身份驗證和AccountController控製器中的用法 133
7.2.3 Windows Authentication 134
7.3 要求角色成員使用Authorize特性 137
7.4 擴展用戶身份 138
7.4.1 存儲額外的用戶資料數據 139
7.4.2 持久化控製 139
7.4.3 管理用戶和角色 139
7.5 通過OAuth和OpenID的外部登錄 139
7.5.1 注冊外部登錄提供器 141
7.5.2 配置OpenID提供器 142
7.5.3 配置OAuth提供器 144
7.5.4 外部登錄的安全性 144
7.6 Web應用程序中的安全嚮量 145
7.6.1 威脅:跨站腳本 146
7.6.2 威脅:跨站請求僞造 154
7.6.3 威脅:cookie盜竊 158
7.6.4 威脅:重復提交 160
7.6.5 威脅:開放重定嚮 162
7.7 適當的錯誤報告和堆棧跟蹤 166
7.7.1 使用配置轉換 167
7.7.2 在生産環境中使用Retail部署配置 168
7.7.3 使用專門的錯誤日誌係統 168
7.8 安全迴顧和有用資源 168
7.9 小結 169
第8章 Ajax 171
8.1 jQuery 172
8.1.1 jQuery的特性 172
8.1.2 非侵入式JavaScript 175
8.1.3 jQuery的用法 176
8.2 Ajax輔助方法 181
8.2.1 在項目中添加非侵入式Ajax腳本 182
8.2.2 Ajax的ActionLink方法 183
8.2.3 HTML 5特性 185
8.2.4 Ajax錶單 186
8.3 客戶端驗證 188
8.3.1 jQuery驗證 188
8.3.2 自定義驗證 191
8.4 輔助方法之外 196
8.4.1 jQuery UI 196
8.4.2 使用jQuery UI實現自動完成部件 197
8.4.3 JSON和客戶端模闆 200
8.4.4 Bootstrap插件 204
8.5 提高Ajax性能 206
8.5.1 使用內容分發網絡 206
8.5.2 腳本優化 206
8.5.3 捆綁和微小 207
8.6 小結 208
第9章 路由 209
9.1 統一資源定位符——URL 209
9.2 路由概述 210
9.2.1 對比路由和URL重寫 211
9.2.2 路由方法 211
9.2.3 定義特性路由 212
9.2.4 定義傳統路由 221
9.2.5 選擇特性路由還是傳統路由 229
9.2.6 路由命名 229
9.2.7 MVC區域 231
9.2.8 catch-all參數 233
9.2.9 段中的多個路由參數 233
9.2.10 StopRoutingHandler和IgnoreRoute 234
9.2.11 路由的調試 235
9.3 揭秘路由如何生成URL 236
9.3.1 URL生成的高層次概述 237
9.3.2 URL生成詳解 237
9.3.3 外界路由值 238
9.3.4 Route類生成URL的若乾示例 240
9.4 揭秘路由如何綁定到操作 241
9.4.1 高層次請求的路由管道 241
9.4.2 路由數據 242
9.5 自定義路由約束 242
9.6 Web Forms和路由機製 243
9.7 小結 244
第10章 NuGet 245
10.1 NuGet概述 245
10.2 以包的形式添加庫 246
10.2.1 查找包 247
10.2.2 安裝包 248
10.2.3 更新包 251
10.2.4 包恢復 251
10.2.5 包管理器控製颱的用法 252
10.3 創建包 254
10.3.1 打包項目 255
10.3.2 打包文件夾 256
10.3.3 配置文件和源代碼轉換 256
10.3.4 NuSpec文件 257
10.3.5 元數據 258
10.3.6 依賴庫 259
10.3.7 指定要包含的文件 260
10.3.8 工具 260
10.3.9 框架和輪廓定位 263
10.3.10 預發布包 264
10.4 發布包 264
10.4.1 發布到NuGet.org 265
10.4.2 使用NuGet.exe 267
10.4.3 包瀏覽器的用法 268
10.5 小結 269
第11章 ASP.NET Web API 271
11.1 定義ASP.NET Web API 272
11.2 Web API入門 272
11.3 編寫API控製器 273
11.3.1 檢查示例ValuesController 273
11.3.2 異步設計:
IHttpController 274
11.3.3 傳入的操作參數 277
11.3.4 操作返迴值、錯誤和異步 277
11.4 配置Web API 279
11.4.1 Web托管Web API的配置 279
11.4.2 自托管Web API的配置 280
11.5 嚮Web API添加路由 282
11.6 綁定參數 283
11.7 過濾請求 285
11.8 啓用依賴注入 286
11.9 探索API編程 286
11.10 跟蹤應用程序 287
11.11 Web API示例:ProductsController 287
11.12 小結 289
第12章 應用AngularJS構建單頁麵應用程序 290
12.1 理解和安裝AngularJS 291
12.1.1 AngularJS簡介 291
12.1.2 本章目標 291
12.1.3 入門 291
12.1.4 嚮網站中添加AngularJS 293
12.1.5 數據庫設置 294
12.2 創建Web API 296
12.3 創建應用程序和模塊 297
12.3.1 創建控製器、模型和視圖 298
12.3.2 服務 300
12.3.3 路由 303
12.3.4 詳細視圖 305
12.3.5 自定義電影服務 306
12.3.6 刪除電影 308
12.3.7 編輯和創建電影 310
12.4 小結 315
第13章 依賴注入 316
13.1 軟件設計模式 316
13.1.1 設計模式——控製反轉模式 317
13.1.2 設計模式——服務定位器 318
13.1.3 設計模式—— 依賴注入 322
13.2 MVC中的依賴解析 325
13.2.1 MVC中的單一注冊服務 326
13.2.2 MVC中的復閤注冊服務 326
13.2.3 MVC中的任意對象 328
13.3 Web API中的依賴解析 330
13.3.1 Web API中的單一注冊服務 330
13.3.2 Web API中的復閤注冊服務 331
13.3.3 Web API中的任意對象 332
13.3.4 對比MVC和Web API中的依賴解析器 332
13.4 小結 333
第14章 單元測試 334
14.1 單元測試和測試驅動開發的意義 334
14.1.1 單元測試的定義 335
14.1.2 測試驅動開發的定義 336
14.2 創建單元測試項目 339
14.2.1 檢查默認單元測試 339
14.2.2 隻測試自己編寫的代碼 340
14.3 單元測試用於ASP.NET MVC和ASP.NET Web API應用程序的技巧和竅門 341
14.3.1 控製器測試 341
14.3.2 路由測試 346
14.3.3 驗證測試 349
14.4 小結 352
第15章 擴展ASP.NET MVC 353
15.1 模型擴展 354
15.1.1 把請求數據轉換為模型 354
15.1.2 用元數據描述模型 359
15.1.3 驗證模型 361
15.2 視圖擴展 364
15.2.1 自定義視圖引擎 364
15.2.2 編寫HTML輔助方法 366
15.2.3 編寫Razor輔助方法 367
15.3 控製器擴展 368
15.3.1 操作選擇 368
15.3.2 操作過濾器 370
15.3.3 提供自定義結果 378
15.4 小結 379
第16章 高級主題 381
16.1 移動支持 381
16.1.1 適應性呈現 382
16.1.2 顯示模式 386
16.2 高級Razor 388
16.2.1 模闆化的Razor委托 388
16.2.2 視圖編譯 389
16.3 高級視圖引擎 390
16.3.1 視圖引擎配置 391
16.3.2 查找視圖 392
16.3.3 視圖本身 393
16.3.4 備用視圖引擎 393
16.3.5 新視圖引擎還是新ActionResult 395
16.4 高級基架 395
16.4.1 ASP.NET基架簡介 395
16.4.2 自定義基架模闆 395
16.4.3 自定義基架器 398
16.5 高級路由 398
16.5.1 RouteMagic 398
16.5.2 可編輯路由 399
16.6 高級模闆 402
16.6.1 默認模闆 403
16.6.2 自定義模闆 406
16.7 高級控製器 408
16.7.1 定義控製器:IController接口 408
16.7.2 ControllerBase抽象基類 409
16.7.3 控製器類和操作 410
16.7.4 ActionResult 411
16.7.5 操作調用器 418
16.7.6 使用異步控製器操作 421
16.8 小結 426
第17章 ASP.NET MVC實戰: 構建NuGet.org網站 427
17.1 源碼與我們同在 428
17.2 WebActivator 430
17.3 ASP.NET動態數據 431
17.4 異常日誌 433
17.5 性能分析 435
17.6 數據訪問 437
17.7 EF基於代碼遷移 438
17.8 使用Octopus Deploy進行部署 440
17.9 使用Fluent Automation自動進行瀏覽器測試 441
17.10 其他有用的NuGet包 441
17.10.1 WebBackgrounder 442
17.10.2 Lucene.NET 443
17.10.3 AnglicanGeek.MarkdownMailer 443
17.10.4 Ninject 443
17.11 小結 444
附錄A ASP.NET MVC 5.1 445
· · · · · · (
收起)