ASP.NET MVC高效構建Web應用
朱文偉 李建英
相關主題
商品描述
目錄大綱
目 錄
第 1 章 ASP.NET框架概述 1
1.1 C/S架構和B/S架構 1
1.2 網站開發概述 2
1.2.1 ASP.NET網站的運行原理 2
1.2.2 ASP.NET的服務器 2
1.2.3 網站開發所需技能 3
1.3 ASP.NET概述 3
1.3.1 ASP.NET的概念 4
1.3.2 ASP.NET的優勢 4
1.3.3 ASP.NET的主流開發方式 5
1.4 ASP.NET Core概述 5
1.4.1 ASP.NET Core的優點 5
1.4.2 ASP.NET Core和ASP.NET 4.x的比較 6
1.5 C#語言概述 6
1.6 .NET Framework框架 7
1.7 HTTP與HTML 8
1.7.1 TCP/IP通信傳輸流 8
1.7.2 HTTP 8
1.7.3 HTML 10
1.8 框架 11
1.8.1 為什麽要使用框架 11
1.8.2 Web框架基礎技術 11
1.8.3 分清框架和庫 11
1.8.4 Web開發框架技術 12
1.9 常見Web框架 12
1.9.1 MVC框架模式 12
1.9.2 MVP框架模式 13
1.9.3 MVVM框架模式 14
1.9.4 Web框架的發展現狀 14
第 2 章 搭建Web開發環境 16
2.1 下載和安裝Visual Studio 16
2.2 第一個ASP.NET項目 19
2.3 生成和調試程序 24
2.3.1 為何要用生成 24
2.3.2 增加工具欄按鈕 26
2.3.3 單步調試ASP.NET項目 27
2.4 簡要剖析項目 30
第 3 章 ASP.NET MVC編程基礎 34
3.1 MVC概述 34
3.1.1 基本概念 34
3.1.2 MVC執行順序 35
3.1.3 ASP.NET MVC和傳統ASP.NET的比較 35
3.1.4 ASP.NET MVC和WebForm的比較 35
3.2 添加新控制器 36
3.2.1 新建項目並添加控制器源文件 36
3.2.2 基於路由為方法增加一個參數 38
3.2.3 基於路由為方法增加多個參數 39
3.2.4 不改變路由為方法增加多個參數 41
3.3 添加視圖 42
3.3.1 新建項目並添加視圖文件 42
3.3.2 更改視圖和佈局頁面 44
3.3.3 更改視圖標題 45
3.3.4 將數據從控制器傳遞給視圖 46
3.4 添加模型 47
3.4.1 模型的實現方式 47
3.4.2 新建項目並添加類 48
3.4.3 ViewData方式傳遞數據到視圖 49
3.4.4 ViewBag方式傳遞數據到視圖 50
3.4.5 通過返回View傳遞數據到視圖 51
3.4.6 TempData方式傳遞數據到視圖 54
3.5 模型綁定基礎 55
3.5.1 基本概念 55
3.5.2 模型綁定的過程 56
3.5.3 模型綁定的作用 56
3.5.4 模型綁定的默認數據源 56
3.5.5 模型綁定的自定義數據源 57
3.5.6 簡單類型的模型綁定 58
3.5.7 復雜類型的模型綁定 58
第 4 章 Razor語法基礎 61
4.1 概述 61
4.1.1 運行原理 62
4.1.2 第一個Razor範例 62
4.2 代碼塊 63
4.2.1 Razor的註釋 63
4.2.2 關鍵字 63
4.2.3 輸出字符@和電子郵件 63
4.2.4 隱式表達式 64
4.2.5 顯式表達式 65
4.2.6 表達式編碼 65
4.2.7 Razor代碼塊 66
4.2.8 隱式轉換 67
4.2.9 顯式分隔轉換 67
4.2.10 以“@:”符號顯式行轉換 67
4.2.11 條件屬性呈現 68
4.2.12 條件語句 68
4.2.13 循環語句 69
4.3 指令塊 71
4.3.1 @function指令定義方法 71
4.3.2 @using指令引入命名空間 72
4.3.3 @model指令指定對象類型 73
4.3.4 佈局類指令 73
4.4 異常處理 73
第 5 章 HTML輔助器 76
5.1 HtmlHelper簡介 76
5.2 輔助器的分類 77
5.3 工作原理 77
5.4 弱類型HtmlHelper 78
5.4.1 準備試驗環境 78
5.4.2 ActionLink鏈接 80
5.4.3 RouteLink鏈接 82
5.4.4 TextBox輸入框 82
5.4.5 Hidden隱藏域 82
5.4.6 Password密碼輸入框 83
5.4.7 CheckBox復選框 83
5.4.8 RadioButton單選按鈕 83
5.4.9 DropDownList下拉菜單 84
5.4.10 ListBox多選框 84
5.4.11 添加屬性 85
5.4.12 Form表單 85
5.4.13 使用TagBuilder創建自定義標簽 88
5.5 強類型HtmlHelper 89
5.5.1 強類型HtmlHelper方法 89
5.5.2 LabelFor數據標簽 91
5.5.3 DisplayFor與EditorFor顯示和編輯Model數據 92
5.6 支架輔助器 93
第 6 章 LINQ的基本使用 99
6.1 基本概念 99
6.2 LINQ提供的程序 99
6.3 LINQ所使用的語法 100
6.3.1 查詢表達式語法 100
6.3.2 方法語法 101
6.4 查詢表達式語法的使用 101
6.4.1 from-in-select的簡單使用 101
6.4.2 使用select的匿名類型形式 104
6.4.3 where子句 106
6.4.4 group…by子句 108
6.4.5 orderby子句 109
6.5 委托 110
6.5.1 委托的基本概念 110
6.5.2 聲明委托 111
6.5.3 通過命名方法使用委托 111
6.5.4 通過delegate關鍵字使用委托 114
6.5.5 通過Lambda表達式使用委托 115
6.5.6 多播委托 117
6.5.7 深入研究委托的“+=”和“-=” 119
6.5.8 內置委托 120
6.6 Expression表達式樹 124
6.6.1 表達式樹是什麽 124
6.6.2 表達式樹基類Expression 125
6.6.3 常用的表達式類型 127
6.6.4 Expression<TDelegate>類 129
6.7 方法調用語法 132
6.7.1 過濾元素的Where方法 132
6.7.2 選取元素的Select和SelectMany方法 136
6.7.3 排序元素的OrderBy方法 138
6.7.4 元素分組的GroupBy方法 140
6.7.5 元素分組的ToLookup方法 140
6.7.6 延遲查詢 141
第 7 章 數據庫快速開發工具Entity Framework 144
7.1 Entity Framework概述 144
7.1.1 ORM是什麽 144
7.1.2 什麽是Entity Framework 145
7.1.3 EF的優缺點 146
7.1.4 EF的適用場合 147
7.1.5 EF的組成結構 147
7.1.6 EF相對於ADO.NET的區別和優點 148
7.1.7 EF的3種開發方式 148
7.2 常用數據庫的準備 149
7.2.1 準備LocalDB 150
7.2.2 下載和安裝MySQL 153
7.2.3 登錄和使用MySQL 155
7.2.4 關閉MySQL的SSL 157
7.2.5 讓Visual Studio連接到MySQL 159
7.2.6 卸載MySQL 160
7.2.7 傳統方式訪問MySQL數據庫 161
7.3 基礎知識的準備 163
7.3.1 實體之間的關系 163
7.3.2 主鍵 164
7.3.3 外鍵 164
7.3.4 外鍵約束 165
7.3.5 HTTP中POST提交數據的4種方式 165
7.3.6 TryUpdateModel更新model 168
7.3.7 MVC中的RedirectToAction 170
7.4 Code First開發基礎 170
7.4.1 實體類及其屬性 171
7.4.2 導航屬性的概念 173
7.4.3 EF中的關系 173
7.4.4 約定、外鍵和導航屬性 174
7.4.5 實體的類型 179
7.4.6 實體對象的狀態 180
7.4.7 數據庫上下文基類DbContext 181
7.4.8 數據集類DbSet 184
7.4.9 不通過配置文件創建數據庫 185
7.4.10 數據庫連接字符串 190
7.4.11 常用數據庫的連接字符串範例 195
7.4.12 通過配置文件創建數據庫 202
7.4.13 基於EF的增、刪、改、查操作 205
7.5 基於Code First的Web案例 213
7.5.1 創建Entity Framework數據模型 213
7.5.2 查看並操作數據庫實驗 222
7.5.3 實現基本的CRUD功能 225
7.5.4 排序、篩選和分頁 237
7.5.5 完善“關於”頁 244
7.6 Database First開發基礎 246
7.6.1 準備數據庫 246
7.6.2 Database First模式的數據庫應用開發 248
7.7 Model First開發基礎 257
第 8 章 服務端數據註解和驗證 269
8.1 概述 269
8.1.1 為何要驗證用戶輸入 269
8.1.2 數據註解及其分類 270
8.2 內置驗證註解 270
8.2.1 Required非空驗證 271
8.2.2 StringLength字符串長度驗證 273
8.2.3 RegularExpression正則表達式驗證 274
8.2.4 Range數值範圍驗證 275
8.2.5 Compare特性 277
8.2.6 Remote遠程服務器驗證 277
8.3 顯示性註解 283
8.3.1 DisplayName顯示屬性名稱 283
8.3.2 DisplayFormat設置顯示格式 285
8.3.3 ReadOnly設置只讀 286
8.3.4 HiddenInput隱藏屬性 290
8.3.5 ScaffoldColumn徹底不顯示屬性 292
8.3.6 分部視圖 295
8.3.7 UIHint定製屬性顯示方式 301
8.4 其他註解 303
8.4.1 DataType提供屬性特定信息 303
8.4.2 映射相關的數據註解NotMapped 304
8.4.3 自定義校驗特性 305
第 9 章 模型模板 308
9.1 模型元數據 308
9.1.1 元數據 308
9.1.2 模型元數據介紹 309
9.1.3 Model與View的使用關系 309
9.1.4 元數據驅動設計 310
9.1.5 元數據的層次結構 311
9.1.6 模型元數據的作用 312
9.1.7 自定義模板 312
9.2 預定義模板 314
9.2.1 EmailAddress模板 314
9.2.2 HiddenInput模板 315
9.2.3 Html模板 316
9.2.4 Text與String模板 317
9.2.5 Url模板 318
9.2.6 MultilineText模板 319
9.2.7 Password模板 319
9.2.8 Decimal模板 320
9.2.9 Collection模板 321
第 10 章 前端驗證 323
10.1 基於HTML的客戶端驗證 324
10.2 基於jQuery Validation Unobtrusive的客戶端驗證 326
10.2.1 基本概念 326
10.2.2 優點 326
10.2.3 開啟或關閉客戶端驗證 327
10.2.4 使用jQuery Validation Unobtrusive的基本步驟 327
10.2.5 基本驗證規則 328
10.2.6 data-val-required和[Required]特性的區別 330
10.2.7 復雜一點的規則 330
第 11 章 安全與身份驗證 334
11.1 概述 334
11.1.1 ASP.NET MVC提供的安全特性 334
11.1.2 身份驗證和授權 335
11.1.3 ASP.NET MVC中的用戶身份驗證和授權 335
11.1.4 授權 336
11.1.5 角色管理 336
11.1.6 用戶管理 336
11.1.7 記錄用戶的驗證狀態 337
11.1.8 命名空間System.Web.Security 337
11.2 會話 338
11.2.1 基本概念 338
11.2.2 工作原理 340
11.2.3 使用會話的優勢 340
11.2.4 會話的應用場景 341
11.3 ASP.NET內置對象 342
11.3.1 基本概念 342
11.3.2 使用內置對象的途徑 343
11.3.3 Response對象 343
11.4 Request對象 348
11.4.1 Server對象 351
11.4.2 Session對象 353
11.4.3 Application對象 355
11.5 Cookie 356
11.5.1 基本概念 356
11.5.2 工作原理 357
11.5.3 Cookie的分類 358
11.5.4 Session和Cookie比較 358
11.5.5 Cookie的作用 359
11.5.6 Cookie類HttpCookie 359
11.5.7 管理Cookie 360
11.6 用戶憑證管理框架 362
11.6.1 概述 362
11.6.2 成員資格類Membership 363
11.6.3 CreateUser創建用戶 367
11.6.4 ValidateUser驗證用戶 369
11.7 表單身份驗證 369
11.7.1 驗證類型 369
11.7.2 基本概念 370
11.7.3 啟用表單驗證 371
11.7.4 表單驗證類FormsAuthentication 372
11.7.5 登錄流程 375
11.7.6 判斷用戶是否登錄 376
11.7.7 FormsAuthenticationTicket創建登錄票據 377
11.7.8 SetAuthCookie創建票據並保存到Cookie 380
11.7.9 IPrincipal和IIdentity 381
11.7.10 類Membership與類FormsAuthentication的功能區別 381
11.8 操作方法的過濾訪問 381
11.8.1 Authorize授權過濾器 381
11.8.2 匿名訪問控制器方法 406
11.8.3 HandleError異常過濾器 409
11.8.4 ActionFilter自定義過濾器 411
11.9 緩存和授權 412
第 12 章 音樂唱片管理系統開發實戰 416
12.1 新建項目 416
12.2 添加控制器 416
12.2.1 使用HomeController 417
12.2.2 添加StoreController 417
12.3 視圖和ViewModel 420
12.3.1 修改視圖模板 420
12.3.2 對常見網站元素使用佈局 421
12.3.3 更新StyleSheet 422
12.3.4 添加流派和專輯模型類 423
12.3.5 使用模型將信息傳遞給視圖 424
12.3.6 在頁面之間添加鏈接 427
12.4 模型和數據訪問 428
12.4.1 使用Code First模式訪問數據庫 429
12.4.2 添加藝術家模型類 429
12.4.3 更新專輯和流派模型類 429
12.4.4 創建連接字符串 430
12.4.5 準備安裝Entity Framework 430
12.4.6 安裝SQL Server Compact驅動 431
12.4.7 添加上下文類 431
12.4.8 添加商品種子數據 431
12.4.9 查詢數據庫 433
12.4.10 更新瀏覽頁面 434
12.5 商品管理 438
12.5.1 創建StoreManagerController 439
12.5.2 修改Index視圖和動作 440
12.5.3 瞭解應用商店管理器 443
12.5.4 查看商店管理器的控制器類 443
12.5.5 查看商店管理器Index方法 444
12.5.6 查看詳細信息操作 444
12.5.7 創建操作 444
12.5.8 編輯操作 449
12.5.9 刪除操作 451
12.5.10 使用HTML幫助程序截斷文本 452
12.5.11 使用數據註解進行模型驗證 453
第 13 章 一百書店系統開發實戰 456
13.1 系統設計 456
13.2 用戶管理 457
13.2.1 添加用戶模型類 457
13.2.2 添加角色模型類 458
13.2.3 安裝Entity Framework 459
13.2.4 創建數據庫上下文類 459
13.2.5 準備生成數據庫 461
13.2.6 添加Users控制器 462
13.2.7 新增用戶管理鏈接 464
13.2.8 完善創建用戶功能 464
13.2.9 完善編輯功能 465
13.2.10 細節和刪除功能 466
13.3 圖書管理 466
13.3.1 添加用戶模型類 466
13.3.2 添加圖書類別 467
13.3.3 在數據庫上下文類中添加數據集成員 467
13.3.4 添加Books控制器 467
13.3.5 添加樣本數據並刪除數據庫 468
13.3.6 首頁新增圖書管理鏈接並運行 469
13.3.7 實現圖書管理的搜索功能 470
13.4 實現首頁列表區 471
13.4.1 實現視圖 472
13.4.2 實現動作方法 474
13.4.3 準備運行查看首頁列表區 475
13.5 實現首頁類別區 475
13.5.1 實現視圖 475
13.5.2 實現動作方法 476
13.5.3 測試首頁類別查詢功能 476
13.6 實現搜索功能 477
13.6.1 實現視圖 477
13.6.2 實現動作方法 477
13.6.3 測試首頁搜索功能 478
13.7 註冊、登錄和註銷 478
13.7.1 首頁增加登錄鏈接 479
13.7.2 添加GET方式的Login方法 479
13.7.3 添加Login視圖 479
13.7.4 添加GET方式的註冊 480
13.7.5 添加Register視圖 480
13.7.6 添加POST方式的註冊 480
13.7.7 開啟表單驗證 480
13.7.8 添加POST方式的Login方法 481
13.7.9 添加註銷方法 482
13.7.10 不同角色顯示不同視圖 482
13.7.11 此時註冊、登錄和註銷 483
13.8 購物車 484
13.8.1 添加購物車商品模型類 484
13.8.2 在數據庫上下文類中添加數據集成員 485
13.8.3 添加購物車商品控制器 485
13.8.4 實現購物車Index視圖 485
13.8.5 實現購物車的角色訪問控制 487
13.8.6 添加“插入商品到購物車”方法 488
13.8.7 增加、減少和刪除 490
13.8.8 購物車結算產生訂單 491
13.9 訂單處理 495
13.9.1 買家查看訂單 496
13.9.2 買家付款 499
13.9.3 管理員發貨 500
13.9.4 買家確認收貨 501
13.9.5 取消訂單 501
13.9.6 刪除訂單 501
13.9.7 評價訂單 502
13.10 一些收尾工作 505
13.10.1 個人信息中心 505
13.10.2 更新關於和聯系方式 506
13.10.3 美化頂部橫幅 506