ASP.NET Core 3 高級編程, 8/e Pro ASP.NET Core 3: Develop Cloud-Ready Web Applications Using MVC 3, Blazor, and Razor Pages

Adam Freeman 杜靜芬 程鳳娟譯

  • ASP.NET Core 3 高級編程, 8/e-preview-1
  • ASP.NET Core 3 高級編程, 8/e-preview-2
  • ASP.NET Core 3 高級編程, 8/e-preview-3
ASP.NET Core 3 高級編程, 8/e-preview-1

買這商品的人也買了...

商品描述

本書內容 ● 介紹ASP.NET Core技能集,為你使用整個ASP.NET Core平臺打下堅實基礎 ● 在開發環境中應用ASP.NET Core 3功能,介紹豐富的可重用模板 ● 查看如何創建RESTful Web服務、Web應用程序和客戶端應用程序 ● 運用現有知識高效地啟動和運行新的編程模型

作者簡介

Adam Freeman是一位經驗豐富的IT專業人士,曾在多家公司擔任高級職位,後擔任一家全球銀行的首席技術官和首席運營官。現在退休了,他把時間花在寫作和長跑上。

目錄大綱

目錄
第I部分  介紹ASP.NET Core
第1章  ASP.NET Core上下文   3
1.1  瞭解ASP.NET Core   3
1.1.1  理解應用程序框架   3
1.1.2  理解實用程序框架   5
1.1.3  瞭解ASP.NET Core平臺   5
1.2  理解本書   5
1.2.1  需要什麽軟件來完成示例?   6
1.2.2  需要什麽平臺來完成示例?   6
1.2.3  源代碼下載   6
1.2.4  如果在執行這些示例時遇到問題,怎麽辦?   6
1.2.5  如果發現書中有錯誤,怎麽辦?   6
1.2.6  本書包含的內容   6
1.2.7  本書未包含的內容   7
1.2.8  如何聯系作者?   7
1.2.9  如果你真的喜歡本書?   8
1.2.10  如果本書讓人生氣,想要抱怨該怎麽辦?   8
1.3  小結   8

第2章  入門   9
2.1  選擇代碼編輯器   9
2.1.1  安裝Visual Studio   10
2.1.2  安裝Visual Studio Code   12
2.2  創建ASP.NET Core項目   16
2.2.1  用Visual Studio打開項目   16
2.2.2  用Visual Studio Code打開項目   17
2.3  運行ASP.NET Core應用程序   18
2.3.1  理解端點   20
2.3.2  瞭解路由   21
2.3.3  理解HTML渲染   22
2.3.4  內容綜述   26
2.4  小結   26

第3章  第一個ASP.NET Core應用程序   27
3.1  設置場景   27
3.2  創建項目   27
3.2.1  添加數據模型   29
3.2.2  創建第二個操作和視圖   29
3.2.3  連接操作方法   31
3.2.4  構建表單   32
3.2.5  接收表單數據   34
3.2.6  添加Thanks視圖   36
3.2.7  顯示響應   37
3.2.8  添加驗證   39
3.2.9  內容的樣式化   44
3.3  小結   49

第4章  使用開發工具   51
4.1  創建ASP.NET Core項目   51
4.1.1  使用命令行創建項目   52
4.1.2  使用Visual Studio創建項目   54
4.2  向項目中添加代碼和內容   57
4.3  構建和運行項目   59
4.3.1  使用命令行構建和運行項目   60
4.3.2  使用Visual Studio Code構建和運行項目   60
4.3.3  使用Visual Studio構建和運行項目   60
4.4  管理包   61
4.4.1管理NuGet包   61
4.4.2  管理工具包   62
4.4.3  管理客戶端包   63
4.4.4  使用Visual Studio管理包   64
4.4.5  使用Visual Studio管理客戶端包   65
4.5  調試項目   65
4.6  小結   66

第5章  C#的基本特點   67
5.1  準備工作   67
5.1.1  打開項目   68
5.1.2  啟用MVC框架   68
5.1.3  創建應用程序組件   69
5.1.4  選擇HTTP埠   70
5.1.5  運行示例應用程序   71
5.2  使用null條件運算符   71
5.2.1  鏈接null條件運算符   72
5.2.2  結合條件運算符和合並運算符   74
5.3  使用自動實現的屬性   76
5.3.1  使用自動實現的屬性初始化器   77
5.3.2  創建自動實現的只讀屬性   77
5.4  使用字符串插值   79
5.5  使用對象和集合初始化器   80
5.6  模式匹配   82
5.7  使用擴展方法   84
5.7.1  將擴展方法應用到接口   86
5.7.2  創建過濾擴展方法   88
5.8  使用lambda表達式   89
5.8.1  定義函數   91
5.8.2  使用lambda表達式方法和屬性   94
5.9  使用類型推斷和匿名類型   96
5.10  在接口中使用默認實現   98
5.11  使用異步方法   101
5.11.1  直接處理任務   101
5.11.2  應用async和await關鍵字   102
5.11.3  使用異步枚舉   104
5.12  獲取名稱   107
5.13  小結   109

第6章  測試ASP.NET Core應用程序   111
6.1  準備工作   112
6.1.1  打開項目   112
6.1.2  選擇HTTP埠   112
6.1.3  啟用MVC框架   113
6.1.4 創建應用程序組件   113
6.1.5  運行示例應用程序   115
6.2  創建單元測試項目   115
6.3  編寫和運行單元測試   116
6.3.1  使用Visual Studio Test Explorer運行測試   118
6.3.2  使用Visual Studio Code運行測試   119
6.3.3  從命令行運行測試   119
6.3.4  糾正單元測試   120
6.3.5  為單元測試隔離組件   121
6.3.6  使用模擬包   126
6.3.7  創建模擬對象   126
6.4  小結   128

第7章  SportsStore:一個真正的應用程序   129
7.1  創建項目   130
7.1.1  創建單元測試項目   130
7.1.2  創建應用程序項目文件夾   130
7.1.3  打開項目   131
7.1.4  準備應用程序服務和請求管道   132
7.1.5  配置Razor視圖引擎   133
7.1.6  創建控制器和視圖   134
7.1.7  啟動數據模型   135
7.1.8  檢查和運行應用程序   135
7.2  向應用程序添加數據   136
7.2.1  安裝Entity Framework Core包   136
7.2.2  定義連接字符串   136
7.2.3  創建數據庫上下文類   137
7.2.4  配置Entity Framework Core   138
7.2.5  創建存儲庫   139
7.2.6  創建數據庫遷移   141
7.2.7  創建種子數據   142
7.3  顯示產品列表   145
7.3.1  準備控制器   145
7.3.2  更新視圖   147
7.3.3  運行應用程序   148
7.4  添加分頁   148
7.4.1  顯示頁面的鏈接   150
7.4.2  改善URL   158
7.5  內容的樣式化   160
7.5.1  安裝Bootstrap包   161
7.5.2  應用Bootstrap風格   161
7.5.3  創建部分視圖   164
7.6  小結   165

第8章  SportsStore:導航和購物車   167
8.1  添加導航控件   167
8.1.1  篩選產品列表   167
8.1.2  優化URL方案   172
8.1.3  構建一個類別導航菜單   176
8.1.4  更正頁數   183
8.2  構建購物車   186
8.2.1  配置Razor Pages   186
8.2.2  創建Razor Pages   189
8.2.3  創建Add To Cart按鈕   189
8.2.4  啟用會話   191
8.2.5  實現購物車功能   193
8.3  小結   203

第9章  SportsStore:完成購物車   205
9.1  使用服務改進Cart模型   205
9.1.1  創建支持存儲的Cart類   205
9.1.2  註冊服務   207
9.1.3  簡化購物車Razor Pages   209
9.2  完成購物車的功能   211
9.2.1  從購物車中刪除商品   211
9.2.2  添加購物車摘要小部件   214
9.3  提交訂單   217
9.3.1  創建模型類   217
9.3.2  添加付款過程   218
9.3.3  創建控制器和視圖   218
9.3.4  實現訂單處理   221
9.3.5  完成訂單控制器   224
9.3.6  顯示驗證錯誤   227
9.3.7  顯示摘要頁面   229
9.4  小結   230

第10章  SportsStore:管理   231
10.1  準備Blazor服務器   231
10.1.1  創建導入文件   233
10.1.2  創建Startup Razor Pages   233
10.1.3  創建路由和佈局組件   234
10.1.4  創建Razor組件   235
10.1.5  檢查Blazor的設置   235
10.2  管理訂單   236
10.2.1  增強模型   236
10.2.2  向管理員顯示訂單   238
10.3  添加目錄管理   241
10.3.1  擴展存儲庫   241
10.3.2  將驗證屬性應用到數據模型   242
10.3.3  創建列表組件   243
10.3.4  創建細節組件   245
10.3.5  創建編輯器組件   246
10.3.6  刪除產品   249
10.4  小結   251

第11章  SportsStore:安全與部署   253
11.1  確保管理功能的安全   253
11.1.1  創建身份數據庫   253
11.1.2  添加常規的管理特性   259
11.1.3  應用基本授權策略   260
11.1.4  創建賬戶控制器和視圖   262
11.1.5  測試安全策略   266
11.2  準備進行部署   266
11.2.1  配置錯誤的處理   266
11.2.2  創建生產配置設置   268
11.2.3  創建Docker映像   268
11.2.4  運行容器化應用程序   271
11.3  小結   272

第II部分  ASP.NET Core平臺
第12章  瞭解ASP.NET Core平臺   275
12.1  準備工作   276
12.2  瞭解ASP.NET Core平臺   277
12.2.1  理解中間件和請求管道   277
12.2.2  瞭解服務   277
12.3  瞭解ASP.NET Core項目   278
12.3.1  理解入口點   279
12.3.2  理解Startup類   280
12.3.3  理解項目文件   281
12.4  創建自定義中間件   283
12.4.1  使用類定義中間件   286
12.4.2  理解返回管道路徑   289
12.4.3  請求管道短路   290
12.4.4  創建管道分支   292
12.4.5  創建終端中間件   294
12.5  配置中間件   297
12.6  小結   301

第13章  使用URL路由   303
13.1  準備工作   304
13.1.1  理解URL路由   307
13.1.2  添加路由中間件、定義端點   307
13.1.3  理解URL模式   310
13.1.4  在URL模式中使用段變量   311
13.1.5  從路由中生成URL   315
13.2  管理URL的匹配   319
13.2.1  從一個URL段匹配多個值   319
13.2.2  為段變量使用默認值   320
13.2.3  在URL模式中使用可選段   321
13.2.4  使用catchall段變量   323
13.2.5  約束段的匹配   324
13.2.6  定義回退路由   327
13.3  高級路由功能   328
13.3.1  創建自定義約束   328
13.3.2  避免模棱兩可的路由異常   330
13.3.3  訪問中間件組件中的端點   332
13.4  小結   334

第14章  使用依賴註入   335
14.1  為本章做準備   336
14.1.1  創建中間件組件和端點   337
14.1.2  配置請求管道   338
14.2  理解服務位置和緊密耦合   339
14.2.1  理解服務位置問題   340
14.2.2  理解緊密耦合組件的問題   342
14.3  使用依賴註入   344
14.3.1  在中間件類中使用服務   346
14.3.2  在端點中使用服務   347
14.4  使用服務生命周期   352
14.4.1  創建臨時服務   353
14.4.2  避免臨時服務重用陷阱   354
14.4.3  使用有作用域的服務   357
14.5  其他依賴註入特性   363
14.5.1  創建依賴關系鏈   363
14.5.2  訪問ConfigureServices方法中的服務   365
14.5.3  使用服務工廠函數   366
14.5.4  創建具有多個實現的服務   367
14.5.5  在服務中使用未綁定類型   370
14.6  小結   372

第15章  使用平臺特性(第1部分)   373
15.1  準備工作   374
15.2  使用配置服務   375
15.2.1  理解特定於環境的配置文件   376
15.2.2  訪問配置設置   377
15.2.3  在服務中使用配置數據   378
15.2.4  理解啟動設置文件   381
15.2.5  確定啟動類中的環境   387
15.2.6  存儲用戶的秘密   388
15.3  使用日誌服務   392
15.3.1  生成日誌消息   392
15.3.2  配置最小日誌級別   395
15.4  使用靜態內容和客戶端包   397
15.4.1  添加靜態內容中間件   397
15.4.2  使用客戶端包   401
15.5  小結   404

第16章  使用平臺特性(第2部分)   405
16.1  準備工作   405
16.2  使用cookie   406
16.2.1  啟用cookie consent檢查   409
16.2.2  管理cookie consent   411
16.3  使用會話   413
16.3.1  配置會話服務和中間件   413
16.3.2  使用會話數據   415
16.4  使用HTTPS連接   417
16.4.1  啟用HTTP連接   417
16.4.2  檢測HTTPS請求   419
16.4.3  執行HTTPS請求   420
16.4.4  啟用HTTP嚴格傳輸安全性   422
16.5  處理異常和錯誤   425
16.5.1  返回HTML錯誤響應   427
16.5.2  富集狀態碼響應   429
16.6  使用Host頭過濾請求   431
16.7  小結   433

第17章  處理數據   435
17.1  準備工作   436
17.2  緩存數據   438
17.2.1  緩存數據值   440
17.2.2  使用共享和持久的數據緩存   443
17.3  緩存響應   447
17.4  使用Entity Framework Core   449
17.4.1  安裝Entity Framework Core   450
17.4.2  創建數據模型   451
17.4.3  配置數據庫服務   452
17.4.4  創建和應用數據庫遷移   453
17.4.5  播種數據庫   454
17.4.6  在端點中使用數據   457
17.5  小結   460

第III部分  ASP.NET Core應用程序
第18章  創建示例項目   463
18.1  創建項目   463
18.2  添加數據模型   464
18.2.1  向項目中添加NuGet包   464
18.2.2  創建數據模型   464
18.2.3  準備種子數據   466
18.2.4  配置Entity Framework Core服務和中間件   467
18.2.5  創建和應用遷移   469
18.3  添加CSS框架   469
18.4  配置請求管道   470
18.5  運行示例應用程序   472
18.6  小結   472

第19章  創建RESTful Web服務   473
19.1  準備工作   474
19.2  理解RESTful Web服務   474
19.2.1  理解請求URL和方法   474
19.2.2  理解JSON   475
19.3  使用自定義端點創建Web服務   475
19.4  使用控制器創建Web服務   478
19.4.1  啟用MVC框架   479
19.4.2  創建控制器   480
19.5  改進Web服務   489
19.5.1  使用異步操作   490
19.5.2  防止過度綁定   491
19.5.3  使用操作的結果   493
19.5.4  驗證數據   499
19.5.5  應用API控制器屬性   501
19.5.6  忽略Null屬性   502
19.6  小結   505

第20章  高級Web服務特性   507
20.1  準備工作   507
20.1.1  刪除數據庫   508
20.1.2  運行示例應用程序   508
20.2  處理相關數據   509
20.3  支持HTTP Patch方法   512
20.3.1  理解JSON Patch   512
20.3.2  安裝和配置JSON Patch包   513
20.3.3  定義操作方法   514
20.4  理解內容的格式化   515
20.4.1  理解默認的內容策略   515
20.4.2  理解內容協商   517
20.4.3  指定操作結果格式   521
20.4.4  在URL中請求格式   522
20.4.5  限制操作方法接收的格式   524
20.5  記錄和探索Web服務   525
20.5.1  解決操作沖突   526
20.5.2  安裝和配置Swashbuckle包   527
20.5.3  微調API描述   529
20.6  小結   533

第21章  使用控制器和視圖(第1部分)   535
21.1  準備工作   536
21.1.1  刪除數據庫   537
21.1.2  運行示例應用程序   537
21.2  開始使用視圖   538
21.2.1  配置應用程序   538
21.2.2  創建HTML控制器   539
21.2.3  創建Razor視圖   542
21.2.4  通過名稱選擇視圖   544
21.3  使用Razor視圖   548
21.4  理解Razor語法   556
21.4.1  理解指令   556
21.4.2  理解內容表達式   557
21.4.3  設置元素內容   557
21.4.4  設置特性值   558
21.4.5  使用條件表達式   559
21.4.6  枚舉序列   563
21.4.7  使用Razor代碼塊   565
21.5  小結   566

第22章  使用控制器和視圖(第2部分)   567
22.1  準備工作   567
22.1.1  刪除數據庫   569
22.1.2  運行示例應用程序   569
22.2  使用ViewBag   570
22.3  使用臨時數據   572
22.4  使用佈局   574
22.4.1  使用ViewBag配置佈局   576
22.4.2  使用ViewStart文件   578
22.4.3  覆蓋默認佈局   579
22.4.4  使用佈局節   583
22.5  使用分部視圖   590
22.5.1  啟用分部視圖   590
22.5.2  創建分部視圖   590
22.5.3  應用分部視圖   591
22.6  理解內容編碼   594
22.6.1  理解HTML編碼   594
22.6.2  理解JSON編碼   596
22.7  小結   597

第23章  使用Razor Pages   599
23.1  準備工作   600
23.2  理解Razor Pages   601
23.2.1  配置Razor Pages   601
23.2.2  創建Razor Pages   603
23.3  理解Razor Pages的路由   607
23.3.1  在Razor Pages中指定路由模式   609
23.3.2  為Razor Pages添加路由   610
23.4  理解頁面模型類   612
23.4.1  使用代碼隱藏類文件   613
23.4.2  理解Razor Pages的操作結果   615
23.4.3  處理多個HTTP方法   619
23.4.4  選擇處理程序方法   621
23.5  理解Razor Pages視圖   623
23.5.1  為Razor Pages創建佈局   623
23.5.2  在Razor Pages中使用分部視圖   625
23.5.3  創建沒有頁面模型的Razor Pages   627
23.6  小結   628

第24章  使用視圖組件   629
24.1  準備工作   629
24.1.1  刪除數據庫   632
24.1.2  運行示例應用程序   632
24.2  理解視圖組件   633
24.3  創建和使用視圖組件   633
24.4  理解視圖組件的結果   637
24.4.1  返回一個分部視圖   638
24.4.2  返回HTML片段   641
24.5  獲取上下文數據   643
24.5.1  使用實參提供父視圖的上下文   645
24.5.2  創建異步視圖組件   648
24.6  創建視圖組件類   649
24.7  小結   655

第25章  使用標簽助手   657
25.1  準備工作   658
25.1.1  刪除數據庫   660
25.1.2  運行示例應用程序   660
25.2  創建標簽助手   660
25.2.1  定義標簽助手類   661
25.2.2  註冊標簽助手   663
25.2.3  使用標簽助手   664
25.2.4  縮小標簽助手的範圍   665
25.2.5  擴展標簽助手的範圍   666
25.3  高級標簽助手功能   668
25.3.1  創建快捷元素   668
25.3.2  以編程方式創建元素   671
25.3.3  追加、附加內容和元素   672
25.3.4  獲取視圖上下文數據   675
25.3.5  使用模型表達式   678
25.3.6  標簽助手之間的協調   682
25.3.7  抑制輸出元素   684
25.4  使用標簽助手組件   686
25.4.1  創建標簽助手組件   686
25.4.2  展開標簽助手的元素選擇   688
25.5  小結   690

第26章  使用內置的標簽助手   691
26.1  準備工作   691
26.1.1  添加圖像文件   693
26.1.2  安裝客戶端包   694
26.1.3  刪除數據庫   694
26.1.4  運行示例應用程序   694
26.2  啟用內置的標簽助手   695
26.3  改變錨元素   695
26.4  使用JavaScript和CSS標簽助手   699
26.4.1  管理JavaScript文件   699
26.4.2  管理CSS樣式表   706
26.5  處理圖像元素   709
26.6  使用數據緩存   710
26.6.1  設置緩存到期時間   712
26.6.2  設置固定的過期點   713
26.6.3  設置最後使用的有效期   713
26.6.4  使用緩存的變化   714
26.7  使用宿主環境標簽助手   715
26.8  小結   716

第27章  使用表單標簽助手   717
27.1  準備工作   717
27.1.1  刪除數據庫   719
27.1.2  運行示例應用程序   719
27.2  理解表單處理模式   720
27.2.1  創建控制器來處理表單   721
27.2.2  創建Razor Pages來處理表單   723
27.3  使用標簽助手改進HTML表單   725
27.3.1  使用表單元素   725
27.3.2  改變表單按鈕   727
27.4  處理input元素   728
27.4.1  轉換input元素的類型屬性   730
27.4.2  格式化input元素值   732
27.4.3  在input元素中顯示相關數據的值   735
27.5  使用label元素   739
27.6  使用select和option元素   741
27.7  處理文本區域   745
27.8  使用防偽功能   746
27.8.1  在控制器中啟用防偽功能   747
27.8.2  在Razor Pages中啟用防偽功能   749
27.8.3  使用JavaScript客戶端防偽令牌   750
27.9  小結   753

第28章  使用模型綁定   755
28.1  準備工作   756
28.1.1  刪除數據庫   757
28.1.2  運行示例應用程序   757
28.2  理解模型綁定   757
28.3  綁定簡單數據類型   759
28.3.1  綁定Razor Pages中的簡單數據類型   760
28.3.2  理解默認綁定值   762
28.4  綁定復雜類型   764
28.4.1  綁定到屬性   766
28.4.2  綁定嵌套的復雜類型   768
28.4.3  選擇性的綁定屬性   772
28.5  綁定到數組和集合   775
28.5.1  綁定到數組   775
28.5.2  綁定到簡單集合   778
28.5.3  綁定到字典   780
28.5.4  綁定到復雜類型的集合   781
28.6  指定模型綁定源   784
28.6.1  選擇屬性的綁定源   786
28.6.2  使用標頭進行模型綁定   787
28.6.3  使用請求體作為綁定源   788
28.7  手動模式綁定   789
28.8  小結   791

第29章  使用模型驗證   793
29.1  準備工作   794
29.2  刪除數據庫   795
29.3  運行示例應用程序   795
29.4  理解對模型驗證的需要   796
29.5  顯式驗證控制器中的數據   796
29.5.1  向用戶顯示驗證錯誤   799
29.5.2  顯示驗證消息   802
29.5.3  顯示屬性級的驗證消息   806
29.5.4  顯示模型級消息   807
29.6  顯式驗證Razor Pages中的數據   810
29.7  使用元數據指定驗證規則   813
29.8  執行客戶端驗證   821
29.9  執行遠程驗證   823
29.10  小結   828

第30章  使用過濾器   829
30.1  準備工作   829
30.1.1  啟用HTTPS連接   831
30.1.2  刪除數據庫   832
30.1.3  運行示例應用程序   833
30.2  使用過濾器   833
30.3  理解過濾器   838
30.4  創建自定義過濾器   839
30.4.1  理解授權過濾器   840
30.4.2  理解資源過濾器   842
30.4.3  理解操作過濾器   846
30.4.4  理解頁面過濾器   850
30.4.5  理解結果過濾器   855
30.4.6  理解異常過濾器   859
30.4.7  創建異常過濾器   860
30.5  管理過濾器生命周期   863
30.5.1  創建過濾器工廠   865
30.5.2  使用依賴註入範圍來管理過濾器的生命周期   866
30.6  創建全局過濾器   868
30.7  理解和改變過濾器的順序   870
30.8  小結   874

第31章  創建表單應用程序   875
31.1  準備工作   875
31.1.1  刪除數據庫   878
31.1.2  運行示例應用程序   878
31.2  創建MVC表單應用程序   879
31.2.1  準備視圖模型和視圖   879
31.2.2  讀取數據   881
31.2.3  創建數據   883
31.2.4  編輯數據   887
31.2.5  刪除數據   890
31.3  創建Razor Pages表單應用程序   892
31.3.1  創建常用功能   893
31.3.2  為CRUD操作定義頁面   896
31.4  創建新的相關數據對象   899
31.4.1  在同一請求中提供相關數據   900
31.4.2  創建新數據   903
31.5  小結   908

第IV部分  高級ASP.NET Core功能
第32章  創建示例項目   911
32.1  創建項目   911
32.2  添加數據模型   912
32.2.1  準備種子數據   914
32.2.2  配置Entity Framework Core服務和中間件   916
32.2.3  創建和應用遷移   917
32.3  添加引導CSS框架   918
32.4  配置服務和中間件   918
32.5  創建控制器和視圖   919
32.6  創建Razor Pages   922
32.7  運行示例應用程序   924
32.8  小結   925

第33章  使用Blazor服務器   (第1部分)   927
33.1  準備工作   928
33.2  理解Blazor服務器   928
33.2.1  理解Blazor服務器的優勢   929
33.2.2  理解Blazor服務器的缺點   930
33.2.3  在Blazor服務器和Angular/React/Vue.js之間選擇   930
33.3  從Blazor開始   930
33.3.1  為Blazor服務器配置ASP.NET Core   930
33.3.2  創建Blazor組件   933
33.4  理解Razor組件的基本特性   938
33.4.1  理解Blazor事件和數據綁定   938
33.4.2  使用數據綁定   946
33.5  使用類文件定義組件   951
33.5.1  使用代碼隱藏類   951
33.5.2  定義Razor組件類   953
33.6  小結   954

第34章  使用Blazor服務器(第2部分)   955
34.1  準備工作   955
34.2  結合組件   956
34.2.1  利用屬性配置組件   958
34.2.2  創建自定義事件和綁定   963
34.3  在組件中顯示子內容   968
34.3.1  創建模板組件   970
34.3.2  在模板組件中使用泛型類型參數   972
34.3.3  級聯參數   978
34.4  處理錯誤   981
34.4.1  處理連接錯誤   981
34.4.2  處理未捕獲的應用程序錯誤   984
34.5  小結   986

第35章  高級Blazor特性   987
35.1  準備工作   988
35.2  使用組件的路由   988
35.2.1  準備Blazor頁   989
35.2.2  向組件添加路由   990
35.2.3  在路由組件之間導航   993
35.2.4  接收路由數據   996
35.2.5  使用佈局定義公共內容   998
35.3  理解組件生命周期方法   1000
35.4  管理組件的交互   1005
35.4.1  使用子組件的引用   1005
35.4.2  與來自其他代碼的組件交互   1008
35.4.3  使用JavaScript與組件交互   1012
35.5  小結   1022

第36章  Blazor表單和數據   1023
36.1  準備工作   1023
36.2  使用Blazor表單組件   1027
36.2.1  創建自定義表單組件   1029
36.2.2  驗證表單數據   1033
36.2.3  處理表單事件   1036
36.3  使用Entity Framework Core與Blazor   1038
36.3.1  理解Entity Framework Core上下文範圍問題   1039
36.3.2  理解重復查詢問題   1043
36.4  執行創建、讀取、更新和刪除操作   1049
36.4.1  創建List組件   1049
36.4.2  創建Details組件   1050
36.4.3  創建Editor組件   1052
36.5  擴展Blazor表單特性   1054
36.5.1  創建自定義驗證約束   1055
36.5.2  創建只驗證提交按鈕組件   1058
36.6  小結   1060

第37章  使用Blazor WebAssembly   1061
37.1  準備工作   1062
37.2  設置Blazor WebAssembly   1064
37.2.1  創建共享項目   1064
37.2.2  創建Blazor WebAssembly項目   1065
37.2.3  準備ASP.NET Core項目   1065
37.2.4  添加解決方案引用   1066
37.2.5  打開項目   1066
37.2.6  完成Blazor WebAssembly配置   1067
37.2.7  測試占位符組件   1069
37.3  創建Blazor WebAssembly組件   1070
37.3.1  導入數據模型名稱空間   1070
37.3.2  創建組件   1070
37.3.3  創建佈局   1074
37.3.4  定義CSS樣式   1075
37.4  完成Blazor WebAssembly表單應用程序   1076
37.4.1  創建Details組件   1076
37.4.2  創建Editor組件   1077
37.5  小結   1080

第38章  使用ASP.NET Core Identity   1081
38.1  準備工作   1082
38.2  為ASP.NET Core Identity準備項目   1083
38.2.1  準備ASP.NET Core Identity數據庫   1083
38.2.2  配置數據庫連接字符串   1083
38.2.3  配置應用程序   1084
38.2.4  創建和應用身份數據庫遷移   1086
38.3  創建用戶管理工具   1086
38.3.1  準備用戶管理工具   1087
38.3.2  枚舉用戶賬戶   1088
38.3.3  創建用戶   1090
38.3.4  編輯用戶   1097
38.3.5  刪除用戶   1099
38.4  創建角色管理工具   1100
38.4.1  為角色管理工具做準備   1101
38.4.2  枚舉和刪除角色   1102
38.4.3  創建角色   1103
38.4.4  分配角色從屬關系   1104
38.5  小結   1107

第39章  應用ASP.NET Core Identity   1109
39.1  驗證用戶的身份   1111
39.1.1  創建登錄特性   1111
39.1.2  檢查ASP.NET Core Identity cookie   1113
39.1.3  創建退出頁面   1114
39.1.4  測試身份驗證特性   1115
39.1.5  啟用身份驗證中間件   1116
39.2  對授權端點的訪問   1118
39.2.1  應用授權屬性   1118
39.2.2  啟用授權中間件   1119
39.2.3  創建被拒絕訪問的端點   1120
39.2.4  創建種子數據   1120
39.2.5  測試身份驗證序列   1123
39.3  授權訪問Blazor應用程序   1124
39.3.1  在Blazor組件中執行授權   1125
39.3.2  向授權用戶顯示內容   1127
39.4  對Web服務進行身份驗證和授權   1129
39.4.1  構建簡單的JavaScript客戶端   1132
39.4.2  限制對Web服務的訪問   1134
39.4.3  使用cookie驗證   1135
39.4.4  使用令牌認證   1138
39.4.5  創建令牌   1139
39.4.6  用令牌驗證   1141
39.4.7  使用令牌限制訪問   1144
39.4.8  使用令牌請求數據   1145
39.5  小結   1147