《精通ASP·NET Core MVC》是2021年人民郵電出版社出版的圖書。
基本介紹
- 中文名:精通ASP·NET Core MVC
- 作者:[英]亞當·弗里曼
- 類別:程式設計
- 出版社:人民郵電出版社
- 出版時間:2021年2月
- 開本:128 開
- 裝幀:平裝-膠訂
- ISBN:9787115559616
內容簡介,作者簡介,圖書目錄,
內容簡介
本書詳細解釋ASP.NET Core MVC的架構、功能和套用,深入闡述構建現代可擴展的Web應用程式的工具、技術和方法,揭示如何為.NET Core平台創建輕型的移動端應用程式。本書主要內容包括MVC模式、C#基本特性、Razor、Visual Studio、MVC應用程式的單元測試、實際應用程式的創建、URL路由、高級路由特性、控制器、依賴注入、過濾器、API控制器、視圖、視圖組件、標籤助手、模型綁定、模型驗證、ASP.NET Core Identity、模型約定和操作約束等。
本書適合.NET開發人員和 Web開發人員閱讀,也可供計算機相關專業的師生閱讀。
作者簡介
Adam Freeman 是一位經驗豐富的IT 專家,曾在一系列公司擔任高級職務,後的職務是一家全球性銀行的首席技術官(Chief Technology Officer,CTO)和營運長(Chief Operating Officer, COO)。退休以後,他喜歡寫作和長跑。 譯者簡介 郝冠軍,微軟有價值專家,《ASP.NET 本質論》作者。超過 20 年開發經驗,擁有從前端到後端豐富的開發經驗,有多個項目的架構設計、系統開發和實施落經驗地,對軟體開發有著深刻理解。 孫臻,現在中國海洋大學就職,長期從事ASP.NET及相關開發,曾參與錄製“MSDN Webcast:Windows Phone 8 ”開發快速入門系列課程,現專注於ASP.NET Core及UWP 開發。 閆曉迪,微軟有價值專家,現任紐西蘭某公司高級開發工程師。10餘年軟體開發經驗,涉及Web、桌面、移動、雲等多種平台和技術。 張?U易,畢業於桂林電子科技大學,獲信息與通信工程碩士學位,新一代人工智慧產業聯盟隱私保護組主要會員,就職于海信數字多媒體國家重點實驗室。主要從事人工智慧領域中知識圖譜、自然語言處理、隱私保護等方向的相關工作。著有SCI兩篇,擁有專利十餘篇,參與了IEEEP2807等大量知識圖譜、隱私保護相關的國際、國家標準工作。
圖書目錄
目 錄
第 一部分 ASP.NET Core MVC
第 1章 ASP.NET Core MVC背景 2
1.1 ASP.NET Core MVC的歷史 2
1.1.1 ASP.NET Web Forms 2
1.1.2 起初的MVC框架 3
1.2 ASP.NET Core 3
1.2.1 ASP.NET Core MVC 2的新特性 4
1.2.2 ASP.NET Core MVC的主要優點 4
1.3 預備知識 6
1.4 本書的結構 6
1.5 如何獲取本書的示例代碼 6
1.6 聯繫作者 6
1.7 小結 7
第 2章 首個MVC應用程式 8
2.1 安裝Visual Studio 8
2.2 安裝.NET Core 2.0 SDK 9
2.3 創建新的ASP.NET Core MVC項目 9
2.3.1 添加控制器 11
2.3.2 理解路由 13
2.4 渲染頁面 14
2.4.1 創建並渲染視圖 14
2.4.2 添加動態輸出 16
2.5 創建一個簡單的數據錄入程式 17
2.5.1 設定場景 17
2.5.2 設計數據模型 18
2.5.3 創建第二個操作和強類型視圖 18
2.5.4 連結操作方法 19
2.5.5 建立表單 20
2.5.6 接收表單數據 21
2.5.7 顯示回響 25
2.5.8 添加驗證 27
2.5.9 設定內容樣式 31
2.6 小結 35
第3章 MVC模式、項目與約定 36
3.1 MVC簡史 36
3.2 MVC模式 36
3.2.1 模型 36
3.2.2 控制器 37
3.2.3 視圖 37
3.2.4 MVC的ASP.NET實現 37
3.3 MVC與其他模式的比較 38
3.3.1 “智慧型UI”模式 38
3.3.2 理解模型-視圖架構 39
3.3.3 經典的3層架構 39
3.3.4 MVC的多樣性 40
3.4 ASP.NET Core MVC項目 40
3.4.1 創建項目 41
3.4.2 關於MVC的約定 43
3.5 小結 44
第4章 C#基本特性 45
4.1 準備示例項目 45
4.1.1 啟用ASP.NET Core MVC 46
4.1.2 創建MVC應用程式組件 47
4.2 運用null條件運算符 48
4.2.1 null條件運算符的連線運算 49
4.2.2 聯合使用null條件運算符和
null合併運算符 50
4.3 使用自動實現屬性 51
4.3.1 初始化自動實現屬性 51
4.3.2 創建唯讀的自動實現屬性 52
4.4 使用字元串插值 53
4.5 使用對象和集合初始化器 54
4.6 模式匹配 56
4.7 使用擴展方法 58
4.7.1 將擴展方法套用於接口 59
4.7.2 創建過濾擴展方法 60
4.8 使用Lambda表達式 61
4.8.1 定義函式 63
4.8.2 使用Lambda表達式實現方法和
屬性 65
4.9 使用類型推斷和匿名類型 66
4.10 使用異步方法 68
4.10.1 直接使用任務 69
4.10.2 使用async和await關鍵字 70
4.11 獲取名稱 71
4.12 小結 72
第5章 使用Razor 73
5.1 準備示例項目 73
5.1.1 定義模型 74
5.1.2 創建控制器 74
5.1.3 創建視圖 75
5.2 使用模型對象 75
5.3 使用布局 78
5.3.1 創建布局 78
5.3.2 使用布局 80
5.3.3 套用視圖啟動檔案 80
5.4 使用Razor表達式 81
5.4.1 插入數據 82
5.4.2 設定屬性值 83
5.4.3 使用條件語句 84
5.4.4 枚舉數組和集合 85
5.5 小結 86
第6章 使用Visual Studio 87
6.1 準備示例項目 87
6.1.1 創建模型 87
6.1.2 創建控制器和視圖 88
6.2 管理軟體包 89
6.2.1 NuGet 89
6.2.2 Bower 91
6.3 疊代開發 93
6.3.1 修改Razor視圖 93
6.3.2 對C#類進行更改 94
6.3.3 使用瀏覽器連結 99
6.4 部署JavaScript和CSS 102
6.4.1 啟用靜態內容傳遞 102
6.4.2 為項目添加靜態內容 103
6.4.3 更新視圖 104
6.4.4 MVC應用程式中的打包和
縮小 105
6.5 小結 108
第7章 對MVC應用程式進行
單元測試 109
7.1 準備示例項目 109
7.1.1 啟用內置的標籤助手 109
7.1.2 為控制器添加操作方法 110
7.1.3 創建數據輸入表單 110
7.1.4 更新Index視圖 111
7.2 測試MVC應用程式 112
7.2.1 創建單元測試項目 112
7.2.2 創建項目引用 113
7.2.3 編寫並運行單元測試 115
7.2.4 隔離組件以進行單元測試 116
7.3 改進單元測試 123
7.3.1 參數化單元測試 123
7.3.2 改進假的實現 126
7.4 小結 129
第8章 SportsStore應用程式 130
8.1 準備開始 130
8.1.1 創建MVC項目 130
8.1.2 創建單元測試項目 133
8.1.3 測試和啟動應用程式 134
8.2 開始領域模型開發 134
8.2.1 創建存儲庫 135
8.2.2 創建虛擬存儲庫 135
8.2.3 註冊存儲庫服務 136
8.3 顯示產品清單 137
8.3.1 添加一個控制器 137
8.3.2 添加並配置視圖 138
8.3.3 設定默認路由 139
8.3.4 運行應用程式 140
8.4 準備資料庫 140
8.4.1 安裝Entity Framework Core
工具包 141
8.4.2 創建資料庫類 141
8.4.3 創建存儲庫類 142
8.4.4 定義連線字元串 142
8.4.5 配置應用程式 143
8.4.6 創建資料庫遷移 145
8.4.7 創建種子數據 145
8.5 添加分頁 148
8.5.1 顯示頁面連結 149
8.5.2 改進URL 155
8.6 更改內容樣式 157
8.6.1 安裝Bootstrap包 157
8.6.2 將Bootstrap樣式套用於布局 157
8.6.3 創建分部視圖 159
8.7 小結 160
第9章 SportsStore的導航 161
9.1 添加導航控制項 161
9.1.1 過濾產品列表 161
9.1.2 最佳化URL結構 164
9.1.3 構建類別導航選單 167
9.1.4 更正頁數 172
9.2 構建購物車 174
9.2.1 定義購物車模型 174
9.2.2 添加Add To Cart按鈕 177
9.2.3 啟用會話 179
9.2.4 實現Cart控制器 180
9.2.5 顯示購物車的內容 181
9.3 小結 183
第 10章 完成購物車 184
10.1 使用服務最佳化購物車模型 184
10.1.1 創建支持存儲感知的Cart類 184
10.1.2 註冊服務 185
10.1.3 簡化Cart控制器 185
10.2 完成購物車功能 186
10.2.1 從購物車中刪除商品 186
10.2.2 添加購物車摘要小部件 188
10.3 提交訂單 190
10.3.1 創建模型類 190
10.3.2 添加結賬流程 191
10.3.3 實現訂單處理 193
10.3.4 完成Order控制器 195
10.3.5 顯示驗證錯誤 198
10.3.6 顯示摘要頁面 199
10.4 小結 199
第 11章 SportsStore的管理 200
11.1 管理訂單 200
11.1.1 增強模型 200
11.1.2 添加操作方法和視圖 201
11.2 添加目錄管理 203
11.2.1 創建CRUD控制器 203
11.2.2 實現列表視圖 205
11.2.3 編輯商品 206
11.2.4 創建新的商品 216
11.2.5 刪除商品 217
11.3 小結 220
第 12章 SportsStore的安全和部署 221
12.1 保護管理功能 221
12.1.1 創建身份標識資料庫 221
12.1.2 套用基本授權策略 224
12.1.3 創建賬戶控制器和視圖 226
12.1.4 測試安全策略 229
12.2 部署應用程式 229
12.2.1 創建資料庫 230
12.2.2 準備應用程式 231
12.2.3 套用資料庫遷移 234
12.2.4 管理資料庫填充 234
12.2.5 部署應用程式 237
12.3 小結 239
第 13章 使用Visual Studio Code 240
13.1 設定開發環境 240
13.1.1 安裝Node.js 240
13.1.2 檢查Node.js安裝狀態 241
13.1.3 安裝Git 241
13.1.4 檢查Git安裝狀態 241
13.1.5 安裝Bower 241
13.1.6 安裝.NET Core 242
13.1.7 檢查.NET Core安裝狀態 242
13.1.8 安裝Visual Studio Code 242
13.1.9 檢查Visual Studio Code安裝
狀態 243
13.1.10 安裝Visual Studio Code的
C#擴展 243
13.2 創建ASP.NET Code項目 244
13.3 使用Visual Studio Code準備項目 244
13.3.1 管理客戶端軟體包 245
13.3.2 配置應用程式 246
13.3.3 構建和運行項目 246
13.4 重新創建PartyInvites應用程式 246
13.4.1 創建模型和存儲庫 247
13.4.2 創建資料庫 249
13.4.3 創建控制器和視圖 250
13.5 Visual Studio Code中的單元測試 254
13.5.1 創建單元測試 254
13.5.2 運行測試 255
13.6 小結 255
第二部分 ASP.NET Core MVC詳解
第 14章 配置應用程式 257
14.1 準備示例項目 257
14.2 配置項目 259
14.2.1 將包添加到項目中 259
14.2.2 將工具包添加到項目中 261
14.3 理解Program類 261
14.4 了解Startup類 264
14.4.1 了解ASP.NET服務 266
14.4.2 了解ASP.NET中間件 268
14.4.3 了解如何調用Configure方法 275
14.4.4 添加其他中間件 278
14.5 配置應用程式 281
14.5.1 創建JSON配置檔案 283
14.5.2 使用配置數據 284
14.5.3 配置日誌記錄 285
14.5.4 配置依賴注入 288
14.6 配置MVC服務 289
14.7 處理複雜配置 290
14.7.1 創建不同的外部配置檔案 290
14.7.2 創建不同的配置方法 292
14.7.3 創建不同的配置類 293
14.8 小結 294
第 15章 URL路由 295
15.1 準備示例項目 295
15.1.1 創建模型類 296
15.1.2 創建Example控制器 296
15.1.3 創建視圖 298
15.2 介紹URL模式 299
15.3 創建和註冊簡單路由 299
15.4 定義默認值 300
15.5 使用靜態URL片段 303
15.6 定義自定義片段變數 306
15.6.1 使用自定義片段變數作為
操作方法的參數 308
15.6.2 定義可選的URL片段 309
15.6.3 定義可變長度路由 311
15.7 約束路由 312
15.7.1 使用正則表達式約束路由 314
15.7.2 使用類型和值約束 316
15.7.3 組契約束 316
15.7.4 定義自定義約束 318
15.8 使用特性路由 320
15.8.1 準備特性路由 320
15.8.2 套用特性路由 321
15.8.3 套用路由約束 323
15.9 小結 323
第 16章 高級路由特性 324
16.1 準備示例項目 324
16.2 在視圖中生成傳出的URL 325
16.2.1 創建傳出的連結 326
16.2.2 創建非連結的URL 333
16.3 自定義路由系統 334
16.3.1 更改路由系統配置 335
16.3.2 創建自定義路由類 336
16.4 使用區域 344
16.4.1 創建區域 344
16.4.2 創建區域路由 345
16.4.3 填充區域 346
16.4.4 生成區域中指向操作的連結 347
16.5 URL模式實踐 348
16.5.1 保持URL的整潔性 348
16.5.2 GET方法和POST方法:
選擇合適的方法 349
16.6 小結 349
第 17章 控制器和操作 350
17.1 準備示例項目 350
17.2 理解控制器 353
17.3 創建控制器 353
17.3.1 創建POCO控制器 353
17.3.2 使用控制器基類 355
17.4 接收上下文數據 355
17.4.1 從Context對象中接收數據 356
17.4.2 使用操作方法參數 359
17.5 生成回響 360
17.5.1 使用Context對象生成回響 360
17.5.2 理解操作結果 361
17.5.3 生成HTML回響 362
17.5.4 執行重定向 369
17.5.5 返回不同類型的內容 374
17.5.6 回響檔案的內容 376
17.5.7 返回錯誤和HTTP狀態碼 377
17.5.8 理解其他操作結果類 378
17.6 小結 378
第 18章 依賴注入 379
18.1 準備示例項目 379
18.1.1 創建模型和存儲庫 380
18.1.2 創建控制器和視圖 381
18.1.3 創建單元測試項目 383
18.2 創建鬆散耦合的組件 383
18.3 ASP.NET的依賴注入 387
18.3.1 準備依賴注入 388
18.3.2 配置服務提供者 389
18.3.3 對具有依賴項的控制器進行
單元測試 390
18.3.4 使用依賴關係鏈 390
18.3.5 對具體類型使用依賴注入 393
18.4 服務的生命周期 394
18.4.1 使用瞬態生命周期 395
18.4.2 使用作用域的生命周期 398
18.4.3 使用單例生命周期 399
18.5 使用操作注入 400
18.6 使用屬性注入特性 401
18.7 手動請求實現對象 401
18.8 小結 402
第 19章 過濾器 403
19.1 準備示例項目 403
19.1.1 啟用SSL 404
19.1.2 創建控制器和視圖 404
19.2 使用過濾器 405
19.3 實現過濾器 408
19.4 使用授權過濾器 409
19.5 使用操作過濾器 412
19.5.1 創建操作過濾器 412
19.5.2 創建異步操作過濾器 414
19.6 使用結果過濾器 414
19.6.1 創建結果過濾器 415
19.6.2 創建異步結果過濾器 416
19.6.3 創建混合操作/結果過濾器 417
19.7 使用異常過濾器 419
19.8 為過濾器使用依賴注入 421
19.8.1 解決過濾器依賴項 421
19.8.2 管理過濾器的生命周期 424
19.9 創建全局過濾器 426
19.10 理解和更改過濾器的執行順序 428
19.11 小結 430
第 20章 API控制器 431
20.1 準備示例項目 431
20.1.1 創建模型和存儲庫 431
20.1.2 創建控制器和視圖 433
20.2 REST控制器的作用 435
20.2.1 速度問題 435
20.2.2 效率問題 436
20.2.3 開放性問題 436
20.3 REST和API控制器 436
20.3.1 創建API控制器 437
20.3.2 測試API控制器 440
20.3.3 在瀏覽器中使用API控制器 443
20.4 內容格式 445
20.4.1 默認內容策略 445
20.4.2 內容協商 446
20.4.3 指定action數據格式 448
20.4.4 從路由或查詢字元串獲取
數據格式 449
20.4.5 啟用完成內容協商 450
20.4.6 接收不同的數據格式 451
20.5 小結 452
第 21章 視圖 453
21.1 準備示例項目 453
21.2 創建自定義視圖引擎 454
21.2.1 創建自定義IView 456
21.2.2 創建IViewEngine實現 456
21.2.3 註冊自定義視圖引擎 457
21.2.4 測試視圖引擎 458
21.3 使用Razor引擎 459
21.3.1 準備示例項目 459
21.3.2 Razor視圖 461
21.4 將動態內容添加到Razor視圖中 463
21.4.1 使用布局部分 464
21.4.2 使用分部視圖 468
21.4.3 將JSON內容添加到視圖中 469
21.5 配置Razor 471
21.6 小結 475
第 22章 視圖組件 476
22.1 準備示例項目 476
22.1.1 創建模型和存儲庫 476
22.1.2 創建控制器和視圖 478
22.1.3 配置應用程式 480
22.2 視圖組件 481
22.3 創建視圖組件 481
22.3.1 創建POCO視圖組件 482
22.3.2 從ViewComponent基類派生 483
22.3.3 視圖組件結果 484
22.3.4 獲取上下文數據 487
22.3.5 創建異步視圖組件 491
22.4 創建混合的控制器/視圖組件類 493
22.4.1 創建混合視圖 493
22.4.2 套用混合類 495
22.5 小結 495
第 23章 標籤助手 496
23.1 準備示例項目 496
23.1.1 創建模型和存儲庫 496
23.1.2 創建控制器、布局與視圖 497
23.1.3 配置應用程式 499
23.2 創建標籤助手 500
23.2.1 定義標籤助手類 501
23.2.2 註冊標籤助手 503
23.2.3 使用標籤助手 503
23.2.4 管理標籤助手的作用域 505
23.3 高級標籤助手特性 508
23.3.1 創建縮寫元素 508
23.3.2 前置和追加內容與元素 510
23.3.3 使用依賴注入獲取視圖
上下文數據 512
23.3.4 使用視圖模型 514
23.3.5 協調標籤助手 516
23.3.6 抑制輸出元素 517
23.4 小結 518
第 24章 使用表單標籤助手 519
24.1 準備示例項目 519
24.2 使用form元素 521
24.2.1 設定form目標 521
24.2.2 使用防偽特性 522
24.3 使用input元素 524
24.3.1 配置input元素 524
24.3.2 格式化數據 526
24.4 使用label元素 528
24.5 使用select和option元素 529
24.5.1 使用數據源填充select元素 530
24.5.2 從枚舉中生成option元素 531
24.6 使用textarea元素 535
24.7 驗證表單標籤助手 536
24.8 小結 536
第 25章 使用其他內置標籤助手 537
25.1 準備示例項目 537
25.2 使用宿主環境標籤助手 538
25.3 使用JavaScript和CSS標籤助手 539
25.3.1 管理JavaScript檔案 539
25.3.2 管理CSS樣式表 545
25.4 使用超連結元素 547
25.5 使用圖像元素 548
25.6 使用數據快取 549
25.6.1 設定快取過期時間 551
25.6.2 使用快取變體 552
25.7 小結 555
第 26章 模型綁定 556
26.1 準備示例項目 556
26.1.1 創建模型和存儲庫 556
26.1.2 創建控制器和視圖 558
26.1.3 配置套用 559
26.2 理解模型綁定 560
26.2.1 默認綁定值 561
26.2.2 綁定簡單值 562
26.2.3 綁定複雜類型 562
26.2.4 綁定數組和集合 570
26.3 指定模型綁定源 575
26.3.1 選擇標準綁定源 576
26.3.2 使用請求頭作為綁定源 577
26.3.3 使用請求體作為綁定源 579
26.4 小結 581
第 27章 模型驗證 582
27.1 準備示例項目 582
27.1.1 創建模型 583
27.1.2 創建控制器 583
27.1.3 創建布局和視圖 584
27.2 理解模型驗證的需求 586
27.3 顯式地驗證模型 586
27.3.1 為用戶顯示驗證錯誤訊息 588
27.3.2 顯示驗證訊息 589
27.3.3 顯示屬性級驗證訊息 592
27.3.4 顯示模型級驗證訊息 593
27.4 使用元數據指定驗證規則 595
27.5 執行客戶端驗證 599
27.6 執行遠程驗證 601
27.7 小結 603
第 28章 ASP.NET Core Identity
入門 604
28.1 準備示例項目 604
28.2 設定ASP.NET Core Identity 607
28.2.1 創建用戶類 607
28.2.2 創建資料庫上下文類 608
28.2.3 配置資料庫連線串 608
28.2.4 創建ASP.NET Core Identity
資料庫 610
28.3 使用ASP.NET Core Identity 610
28.3.1 列舉用戶賬戶 610
28.3.2 創建用戶 612
28.3.3 驗證密碼 615
28.3.4 驗證用戶詳情 620
28.4 完成管理功能 624
28.4.1 實現刪除功能 625
28.4.2 實現編輯功能 626
28.5 小結 629
第 29章 套用ASP.NET Core
Identity 630
29.1 準備示例項目 630
29.2 驗證用戶 630
29.2.1 準備實現驗證 632
29.2.2 添加用戶驗證 634
29.2.3 測試驗證 636
29.3 使用角色授權用戶 636
29.3.1 創建與刪除角色 637
29.3.2 管理角色成員 641
29.3.3 使用角色進行授權 644
29.4 播種資料庫 647
29.5 小結 650
第30章 ASP.NET Core Identity
進階 651
30.1 準備示例項目 651
30.2 添加自定義用戶屬性 652
30.2.1 準備資料庫遷移 654
30.2.2 測試自定義屬性 655
30.3 使用聲明和策略 655
30.3.1 聲明 656
30.3.2 創建聲明 659
30.3.3 使用策略 661
30.3.4 使用策略對資源授權訪問 666
30.4 使用第三方驗證 670
30.4.1 註冊Google套用 670
30.4.2 啟用Google驗證 671
30.5 小結 674
第31章 模型約定與操作約束 675
31.1 準備示例項目 675
31.2 使用應用程式模型和模型約定 677
31.2.1 理解應用程式模型 678
31.2.2 理解模型約定角色 680
31.2.3 創建模型約定 680
31.2.4 理解模型約定的執行順序 684
31.2.5 創建全局模型約定 685
31.3 使用操作約束 686
31.3.1 準備示例項目 687
31.3.2 操作約束的作用 688
31.3.3 創建操作約束 689
31.3.4 在操作約束中處理依賴 692
31.4 小結 694