《ASP.NET MVC 4框架揭秘》
《ASP.NET MVC 4框架揭秘》
GITHUB:https://github.com/jash-git/Jash-good-idea-20220101-001/tree/main/ASP.NET
封面; 1
書名頁; 2
版權頁; 3
前言; 4
目錄; 10
第1章 ASP.NET+MVC; 16
1.1 傳統MVC模式; 17
1.1.1 自治視圖; 17
1.1.2 什麼是MVC模式; 18
1.2 MVC的變體; 19
1.2.1 MVP; 19
1.2.2 Model 2; 27
1.2.3 ASP.NETMVC與Model 2; 28
1.3 IIS/ASP.NET管道; 29
1.3.1 IIS 5.x與ASP.NET; 29
1.3.2 IIS 6.0與ASP.NET; 30
1.3.3 IIS 7.0與ASP.NET; 32
1.3.4 ASP.NET管道; 35
1.4 ASP.NET MVC是如何運行的; 40
1.4.1 建立在“迷你版” ASP.NET MVC上的Web應用; 40
1.4.2 URL路由; 42
1.4.3 Controller的啟動; 46
1.4.4 Action的執行; 50
第2章 URL路由; 56
2.1 ASP.NET路由系統; 57
2.1.1 請求URL與物理檔的分離; 57
2.1.2 實例演示:通過URL路由實現請求位址與.aspx頁面的映射(S201); 58
2.1.3 Route與RouteTable; 61
2.1.4 路由映射; 67
2.1.5 根據路由規則生成URL; 74
2.2 ASP.NET MVC擴展; 76
2.2.1 路由映射; 76
2.2.2 實例演示:註冊路由映射與查看路由資訊(S208); 77
2.2.3 缺省URL參數; 80
2.2.4 基於Area的路由映射; 82
2.2.5 連結和URL的生成; 86
2.3 動態HttpHandler映射; 93
2.3.1 UrlRoutingModule; 93
2.3.2 PageRouteHandler與MvcRouteHandler; 94
2.3.3 ASP.NET路由系統擴展; 95
第3章 Controller的啟動; 101
3.1 總體設計; 102
3.1.1 Controller; 102
3.1.2 ControllerFactory; 107
3.1.3 ControllerBuilder; 108
3.1.4 Controller的啟動與URL路由; 114
3.2 默認實現; 116
3.2.1 Controller類型的解析; 117
3.2.2 Controller類型的緩存; 120
3.2.3 Controller的釋放和會話狀態行為的控制; 121
3.3 IoC的應用; 123
3.3.1 從Unity來認識IoC; 123
3.3.2 Controller與Model的分離; 125
3.3.3 基於IoC的ControllerFactory; 126
3.3.4 基於IoC的ControllerActivator; 132
3.3.5 基於IoC的DependencyResolver; 134
第4章 Model中繼資料的解析; 138
4.1 Model中繼資料及其定制; 139
4.1.1 Model中繼資料層次化結構; 139
4.1.2 基本Model中繼資料資訊; 140
4.1.3 Model中繼資料的定制; 143
4.1.4 IMetadataAware介面; 157
4.2 Model中繼資料與Model範本; 161
4.2.1 實例演示:通過範本將布林值顯示為RadioButton(S409); 162
4.2.2 預定義範本; 163
4.2.3 DataTypeName與範本名稱; 172
4.2.4 範本的獲取與執行; 175
4.2.5 實例演示:通過定制Model中繼資料和自訂範本實現預定義清單的呈現(S412); 179
4.3 Model中繼資料的提供機制; 187
4.3.1 再談ModelMetadata; 187
4.3.2 ModelMetadataProvider; 191
4.3.3 Model中繼資料提供系統的擴展; 195
第5章 Model的綁定; 198
5.1 ControllerDescriptor、ActionDescriptor與ParameterDescriptor; 199
5.1.1 ControllerDescriptor; 199
5.1.2 ActionDescriptor; 204
5.1.3 ParameterDescriptor; 208
5.2 ValueProvider; 211
5.2.1 NameValueCollectionValueProvider; 212
5.2.2 DictionaryValueProvider; 218
5.2.3 ValueProviderFactory; 226
5.2.4 ValueProviderFactories; 226
5.3 ModelBinder; 230
5.3.1 ModelBinder與ModelBinderProvider; 230
5.3.2 ModelState與Model綁定; 238
5.3.3 ModelBindingContext的創建; 242
5.4 Model綁定的默認實現; 243
5.4.1 簡單類型; 244
5.4.2 複雜類型; 247
5.4.3 陣列; 253
5.4.4 集合; 261
5.4.5 字典; 263
第6章 Model的驗證; 269
6.1 ModelValidator與ModelValidatorProvider; 270
6.1.1 ModelValidator; 270
6.1.2 ModelValidatorProvider; 273
6.1.3 ModelValidatorProviders; 279
6.2 Model綁定與驗證; 284
6.2.1 ModelState; 284
6.2.2 驗證消息的呈現; 287
6.2.3 Model綁定中的驗證; 293
6.3 基於資料注解特性的Model驗證; 298
6.3.1 ValidationAttribute特性; 298
6.3.2 DataAnnotationsModelValidator; 305
6.3.3 DataAnnotationsModelValidatorProvider; 307
6.3.4 將ValidationAttribute應用到參數上; 310
6.3.5 一種Model類型,多種驗證規則; 315
6.4 用戶端驗證; 322
6.4.1 jQuery驗證; 322
6.4.2 基於jQuery的Model驗證; 326
6.4.3 自訂驗證; 330
第7章 Action的執行; 335
7.1 非同步Action的定義; 336
7.1.1 基於執行緒池的請求處理機制; 336
7.1.2 兩種非同步Action方法的定義; 337
7.1.3 AsyncManager; 339
7.2 Action方法的執行; 345
7.2.1 MvcHandler對請求的處理; 345
7.2.2 Controller的執行; 345
7.2.3 ActionInvoker的執行; 346
7.2.4 ControllerDescriptor的同步與非同步; 351
7.2.5 ActionDescriptor的執行; 354
7.3 篩選器的執行; 360
7.3.1 Filter及其提供機制; 360
7.3.2 AuthorizationFilter; 370
7.3.3 ActionFilter; 380
7.3.4 ExceptionFilter; 386
7.3.5 實例演示:集成EntLib實現自動化異常處理(S713, S714, S715); 388
7.3.6 ResultFilter; 402
第8章 View的呈現; 405
8.1 ActionResult; 406
8.1.1 EmptyResult; 406
8.1.2 ContentResult; 407
8.1.3 FileResult; 413
8.1.4 JavaScriptResult; 417
8.1.5 JsonResult; 420
8.1.6 HttpStatusCodeResult; 423
8.1.7 RedirectResult/RedirectToRouteResult; 424
8.2 ViewResult與ViewEngine; 426
8.2.1 View引擎中的View; 426
8.2.2 ViewEngine; 428
8.2.3 ViewResult的執行; 430
8.3 Razor引擎; 438
8.3.1 View的編譯原理; 438
8.3.2 WebViewPage與WebViewPage<\;TModel>\;; 442
8.3.3 RazorView; 447
8.3.4 RazorViewEngine; 456
第9章 ASP.NET Web API; 460
9.1 Web、REST與Web API; 461
9.1.1 Web如此簡單; 461
9.1.2 REST是什麼; 462
9.1.3 ASP.NET Web API; 465
9.2 服務端管道; 473
9.2.1 ASP.NET Web API管道式設計; 474
9.2.2 HttpMessageHandler; 476
9.2.3 HttpServer; 479
9.2.4 實例演示:自訂HttpMessageHandler實現HTTP方法重寫(S903); 484
9.3 HttpControllerDispatcher; 486
9.3.1 HttpController的啟動; 487
9.3.2 HttpController的執行; 500
9.3.3 Action的選擇; 501
9.3.4 Model中繼資料的解析; 507
9.3.5 Action參數綁定; 510
9.3.6 Model驗證; 523
9.3.7 Action的執行與結果的回應; 527
9.4 Web API的調用和自我寄宿; 531
9.4.1 HttpClient; 531
9.4.2 HttpSelfHostServer; 536
第10章 案例實踐; 542
10.1 功能性簡介; 543
10.1.1 商品列表的呈現; 543
10.1.2 定購商品; 545
10.1.3 登錄與錯誤頁面; 546
10.2 設計概述; 547
10.2.1 Controller-Service-Repository; 547
10.2.2 IoC的應用; 551
10.2.3 AOP的應用; 554
10.2.4 異常處理; 560
10.3 程式設計實現; 561
10.3.1 資料表的創建; 561
10.3.2 Repository; 563
10.3.3 Service; 567
10.3.4 路由註冊和佈局; 570
10.3.5 ProductController; 573
10.3.6 OrderController; 580
10.3.7 AccountController; 586
附錄A 實例清單; 590