ASP.NET MVC 是微軟官方提供的以MVC模式為基礎(chǔ)的ASP.NET Web應(yīng)用程序框架。MVC 將一個Web應(yīng)用分解為Model、View和Controller,有助于管理復(fù)雜的應(yīng)用程序,并簡化了分組開發(fā),使得復(fù)雜項目更易維護。
本書共分為12章,以符合初學(xué)者思維的方式系統(tǒng)地介紹ASP.NET MVC的應(yīng)用技巧,并結(jié)合實際項目詳細地介紹如何基于ASP.NET MVC構(gòu)建企業(yè)項目。通過本書的學(xué)習(xí),讀者可以全面掌握ASP.NET MVC的開發(fā),并從代碼中獲取軟件開發(fā)與架構(gòu)設(shè)計的經(jīng)驗與靈感。
本書具有很大的參考價值,既適合ASP.NET MVC開發(fā)初學(xué)者閱讀,也適合有一定基礎(chǔ)的ASP.NET MVC開發(fā)人員進行技術(shù)強化和經(jīng)驗積累,同時還適合作為高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)的教學(xué)參考書。
本書是一本非常接地氣的 .NET Web 開發(fā)指導(dǎo)書籍。有別于市面上的同類書籍,它既不像微軟官方資料和Demo那樣照本宣科,也不像大學(xué)教材那樣乏味說教。它凝聚了作者在ASP.NET MVC及其相關(guān)技術(shù)的實際經(jīng)驗,將實戰(zhàn)與理論相結(jié)合,介紹如何使用ASP.NET MVC來進行企業(yè)應(yīng)用開發(fā),是初學(xué)者難得的引路書籍。微云數(shù)聚(北京)科技有限公司CEO 張幟
本書所涉及的知識面非常廣,內(nèi)容涵蓋了ASP.NET MVC開發(fā)中*常使用的技術(shù)和框架,由淺入深,易于讀者理解和掌握,配合作者精心挑選的例子,實用性強,很具實戰(zhàn)參考價值。相信本書講解的內(nèi)容能夠使您的Web開發(fā)水平提升一個臺階。微軟高級架構(gòu)師 Terry Zhou
作者年輕、充滿活力,給我*的印象是公司年會上表演的雙截棍節(jié)目,讓我充分相信程序員是多么優(yōu)秀的職業(yè)。作者能夠在家人身體欠佳的狀況下如期完成本書的編寫,可見其毅力多么堅韌。本書能夠讓初學(xué)MVC的讀者有很清晰的技術(shù)路線,而且配套的Demo基本都是在實際項目中的運用,非常值得研究。深圳市跨境翼電子商務(wù)股份有限公司CEO 李君
能夠與作者在同一家公司,并一起完成書中的財務(wù)對賬系統(tǒng),是一件讓人短暫痛苦但回想起來非常開心的事情。作者能堅持寫作多年,并將平時學(xué)習(xí)到的知識在日常工作的項目中進行實戰(zhàn),這需要非常堅韌的毅力。希望本書能夠讓更多讀者看到在企業(yè)項目實踐中MVC的運用過程,同時也希望作者能夠繼續(xù)堅持擁抱變化。深圳市思創(chuàng)信息技術(shù)有限公司總經(jīng)理 何成
我在公司實際項目中把《ASP.NET MVC企業(yè)級實戰(zhàn)》列為我們重要的中文參考資料。它覆蓋了工作中所有的ASP.NET MVC 技術(shù)要點,讓我們的新員工順利過渡到項目中,作者有深厚的編程和教學(xué)經(jīng)驗,也盡力把相關(guān)問題由淺入深分析清楚,這在MVC的同類書籍中是非常難得的。長沙道好信息科技有限公司技術(shù)總監(jiān) 周尹
序言
ASP.NET MVC 4是目前大部分IT企業(yè)使用的Web開發(fā)技術(shù),許多互聯(lián)網(wǎng)公司招聘都明確要求熟悉ASP.NET MVC。最近公司在招.NET程序員,我發(fā)現(xiàn)好多來公司面試的.NET程序員根本沒有 ASP.NET MVC項目經(jīng)驗,其中包括一些工作了四五年,甚至八年十年的。還有一些.NET程序員對ASP.NET MVC的認(rèn)知只是停留在大學(xué)老師教過、自己學(xué)過、以前公司用過……這樣的話在公司項目開發(fā)過程中往往無法完成一些稍微復(fù)雜一點的開發(fā)任務(wù)或者只能以一種很low的方式來實現(xiàn)一些功能。顯然,這些人是無法適應(yīng).NET Web開發(fā)浪潮的。所以我決定針對公司真實項目用到的ASP.NET MVC技術(shù)寫一本書,以供打算從事.NET Web開發(fā)、無MVC項目經(jīng)驗、MVC不熟或者打算提升.NET Web開發(fā)水平的讀者學(xué)習(xí)參考,以便快速適應(yīng)工作。我是自學(xué).NET的,翻閱過國內(nèi)外.NET電子書不下百本,感覺書本上說的和企業(yè)里面用的完全是兩碼事。作為一線碼農(nóng),我希望可以同大家分享工作當(dāng)中真正有用的知識、技術(shù)及技巧。本書以符合初學(xué)者思維的方式,系統(tǒng)地介紹ASP.NET MVC的應(yīng)用技巧,并結(jié)合實際項目詳細地介紹如何基于ASP.NET MVC構(gòu)建企業(yè)項目。通過本書的學(xué)習(xí),讀者可以全面掌握ASP.NET MVC的開發(fā),并可以從代碼中獲取軟件開發(fā)與架構(gòu)設(shè)計的經(jīng)驗與靈感。本書適合ASP.NET MVC的初學(xué)者,欲深入了解ASP.NET MVC開發(fā)的軟件工程師、系統(tǒng)架構(gòu)師和軟件工程師,以及任何對ASP.NET MVC相關(guān)技術(shù)感興趣的讀者。書中所載技術(shù)均為一線城市中互聯(lián)網(wǎng)企業(yè)所流行的.NET Web開發(fā)技術(shù),具有很強的參考價值。本書附帶源代碼,以供讀者參考,便于理解書中的內(nèi)容,下載地址(注意數(shù)字和字母大小寫)為:http://pan.baidu.com/s/1dE8X0gp(密碼:4gce)如果下載有問題,請電子郵件聯(lián)系booksaga@163.com,郵件主題為ASP.NET MVC企業(yè)級實戰(zhàn)。
編 者2017年2月
目 錄
第1章 MVC開發(fā)前奏 1
1.1 開發(fā)環(huán)境搭建 1
1.1.1
操作系統(tǒng)和開發(fā)工具 1
1.1.2
開發(fā)環(huán)境配置 3
1.1.3
VS常用快捷鍵 7
1.1.4
VS技巧 8
1.2 常用輔助開發(fā)工具介紹 10
1.2.1
Firebug 10
1.2.2
HttpRequester 12
1.3 知識儲備 13
1.3.1
必備知識介紹 13
1.3.2
樹立軟件開發(fā)信心 13
1.4
C#語法新特性 14
1.4.1
C# 2.0 新特性 14
1.4.2
C# 3.0/C# 3.5 新特性 16
1.4.3
C# 4.0新特性 26
1.4.4
C#5.0新特性 28
第2章 Entity Framework 29
2.1
Entity Framework簡介 29
2.1.1
與ADO.NET的關(guān)系 29
2.1.2
什么是O/R Mapping 29
2.1.3
ORM in EF 30
2.1.4
EF的優(yōu)缺點 30
2.2
Database First 開發(fā)方式 31
2.2.1
創(chuàng)建Dtabase First Demo 31
2.2.2
EF原理 34
2.3
Entity Framework增刪改查 37
2.3.1
附加數(shù)據(jù)庫 37
2.3.2
新建項目 39
2.3.3
新增 39
2.3.4
簡單查詢和延時加載 40
2.3.5
根據(jù)條件排序和查詢 42
2.3.6
分頁查詢 43
2.3.7
修改 43
2.3.8
刪除 45
2.3.9
批處理 46
2.4
EF查詢相關(guān) 48
2.4.1
IQueryable與IEnumberable接口的區(qū)別 48
2.4.2
LINQ To EF 48
2.4.3
關(guān)于EF對象的創(chuàng)建問題 50
2.4.4
關(guān)于上下文的使用注意事項 51
2.4.5
EF 跨數(shù)據(jù)庫支持 51
2.5
Model First 開發(fā)方式 51
2.5.1
創(chuàng)建Model First Demo 52
2.5.2
經(jīng)驗分享 60
2.6
Code First 開發(fā)方式 60
2.6.1
創(chuàng)建Code First Demo 61
2.6.2
關(guān)于EF實例的創(chuàng)建問題 68
第3章 初識MVC 69
3.1
MVC簡介與三層架構(gòu) 70
3.1.1
MVC簡介 70
3.1.2
三層架構(gòu) 71
3.2
ASP.NET的兩種開發(fā)方式 72
3.2.1
ASP.NET開發(fā)現(xiàn)狀 72
3.2.2
WebForms的開發(fā)方式 73
3.2.3
ASP.NET MVC的開發(fā)方式 74
3.3 第一個ASP.NET
MVC程序 75
3.3.1
創(chuàng)建項目 75
3.3.2
項目框架結(jié)構(gòu)說明 77
3.3.3
路由映射URL到Action 79
3.3.4
返回string的MVC方法 81
3.3.5
簡單了解Razor視圖 81
3.3.6
ASP.NET MVC組件之間的關(guān)系 82
3.4
MVC的約定 82
3.4.1
控制器的約定大于配置 83
3.4.2
視圖的相關(guān)約定 83
第4章 MVC進階 84
4.1
View詳解 84
4.1.1
View和Action之間數(shù)據(jù)傳遞的方式 84
4.1.2
TempData、ViewData和ViewBag的區(qū)別 85
4.2
Razor視圖引擎 88
4.2.1
什么是 Razor 88
4.2.2
Razor 語法 89
4.2.3
Razor 布局整體視圖模板 92
4.2.4
Razor 布局ViewStart 93
4.2.5
Razor 布局部分視圖 93
4.2.6
視圖引擎 95
4.2.7
MVC視圖的秘密 96
4.3
Controller 98
4.3.1
Action方法參數(shù)與返回值 98
4.3.2
Action指定使用視圖 100
4.3.3
View和Controller之間的關(guān)系 102
4.4
Model和驗證 104
4.4.1
Net MVC請求處理流程 104
4.4.2
MVC模型驗證 104
4.5
HtmlHelper 111
4.5.1
HtmlHelper的Action、表單標(biāo)簽 112
4.5.2
HtmlHelper的弱類型與強類型方法 113
4.5.3
HtmlHelper的RenderPartial 116
4.5.4
HtmlHelper的RenderAction 116
4.5.5
HtmlHelper擴展方法 117
4.6
ASP.NET MVC分頁 118
4.6.1
HtmlHelper 118
4.6.2
局部視圖 124
4.6.3
MvcPager 127
4.6.4
第三方UI組件 131
第5章 MVC核心透析 132
5.1
MVC Routing 132
5.1.1
RoutingURL 133
5.1.2
Routing的作用 134
5.1.3
Routing包含字面值的URL 134
5.1.4
Routing測試 135
5.2 異步Ajax 137
5.2.1
傳統(tǒng)Ajax實現(xiàn)方式 137
5.2.2
Unobtrusive Ajax使用方式 140
5.2.3
AjaxHelper 141
5.2.4
請求Json數(shù)據(jù) 144
5.3
MVC Areas 146
5.3.1
Area使用入門 146
5.3.2
Area注冊類放到單獨程序集 148
5.3.3
Area注冊控制器放到單獨程序集 150
5.4
MVC Filter 151
5.4.1
Action 152
5.4.2
Result 153
5.4.3
AuthorizeAttribute 157
5.4.4
Exception 158
5.5
MVC整體運行流程 159
5.5.1
進入管道 159
5.5.2
路由注冊 162
5.5.3
創(chuàng)建MvcHandler對象 164
5.5.4
執(zhí)行MvcHandler ProcessRequest方法 166
5.5.5
調(diào)用控制器里面的Action方法 169
5.5.6
根據(jù)Action方法返回的ActionResult加載View 172
第6章 網(wǎng)站性能和安全優(yōu)化 175
6.1 緩存 175
6.2 壓縮合并css和js 178
6.3 刪除無用的視圖引擎 179
6.4 使用防偽造令牌來避免CSRF攻擊 181
6.5 隱藏ASP.NET MVC版本 182
6.6
Nginx服務(wù)器集群 182
6.6.1
Nginx是什么 182
6.6.2
Nginx的應(yīng)用現(xiàn)狀和特點 184
6.6.3
Nginx的事件處理機制 184
6.6.4
Nginx不為人知的特點 186
6.6.5
Nginx的內(nèi)部模型 186
6.6.6
Nginx如何處理請求 188
6.6.7
Nginx典型的應(yīng)用場景 188
6.6.8
Nginx的應(yīng)用 189
6.6.9
Nginx常見配置說明 190
6.6.10
集群案例 195
6.7 常用的Web安全技術(shù)手段 197
第7章 NHibernate 199
7.1
NHibernate簡介 199
7.1.1
什么是NHibernate 199
7.1.2
NHibernate的架構(gòu) 199
7.1.3
NHibernate與其Entity Framework框架比較 200
7.2 第一個NHibernate應(yīng)用程序 201
7.2.1
搭建項目基本框架 201
7.2.2
編寫映射文件 206
7.2.3
添加數(shù)據(jù)訪問層類 209
7.2.4
添加業(yè)務(wù)邏輯層類 210
7.2.5
添加控制器和視圖 211
7.3 增刪改查詢 212
7.4 使用代碼映射 213
7.4.1
NHibernate入職Demo 214
7.4.2
NHibernate代碼映射高級功能 217
7.5 監(jiān)聽NHibernate生成的SQL 224
7.5.1
使用show_sql 224
7.5.2
使用NHibernateProfile 225
第8章 IoC 、Log4Net和Quartz.Net
228
8.1
Unity 228
8.1.1
獲取Unity 228
8.1.2
Unity簡介 229
8.1.3
Unity API 229
8.1.4
使用Unity 229
8.2
Spring.Net 234
8.2.1
Web.config中的屬性注入 234
8.2.2
在單獨的配置文件中構(gòu)造函數(shù)注入 238
8.3
Log4Net 240
8.3.1
配置Log4Net環(huán)境 240
8.3.2
Log4Net相關(guān)概念 244
8.4
Quartz.Net 244
8.4.1
Quartz.Net概述 244
8.4.2
參考資料 244
8.4.3
Quartz.Net使用示例 245
第9章 分布式技術(shù) 256
9.1
WebService 256
9.1.1
創(chuàng)建一個WebService并調(diào)用 256
9.1.2
調(diào)用天氣預(yù)報服務(wù) 259
9.2
WCF 262
9.2.1
什么是WCF 262
9.2.2
理解面向服務(wù) 263
9.2.3
WCF體系架構(gòu)簡介 263
9.2.4
WCF的基礎(chǔ)概念介紹 264
9.2.5
創(chuàng)建第一個WCF程序 269
9.2.6
WCF和WebService的區(qū)別 276
9.3
Web API 276
9.3.1
創(chuàng)建WebAPI 277
9.3.2
調(diào)用WebAPI 278
9.3.3
WebAPI授權(quán) 282
9.3.4
WebAPI的調(diào)試 285
9.4
Memcached 285
9.4.1
Memcached簡介 285
9.4.2
Memcached 基本原理 287
9.4.3
Memcached服務(wù)端的安裝 288
9.4.4
C#操作Memcached 290
9.5
Redis 292
9.5.1
Redis簡介 292
9.5.2
Redis與Memcached的比較 292
9.5.3
Redis環(huán)境部署 293
9.5.4
Redis常用數(shù)據(jù)類型 296
9.5.5
給Redis設(shè)置密碼 302
9.5.6
Redis主從復(fù)制 303
9.6
MongoDB 306
9.6.1
MongoDB簡介 306
9.6.2
下載安裝和配置 307
9.6.3
使用mongo.exe 執(zhí)行數(shù)據(jù)庫增刪改查操作 311
9.6.4
更多命令 313
9.6.5
MongoDB語法與現(xiàn)有關(guān)系型數(shù)據(jù)庫SQL語法比較 315
9.6.6
可視化的客戶端管理工具MongoVUE 315
9.6.7
通過C#的samus驅(qū)動進行操作 317
9.6.8
索引 320
第10章 站內(nèi)搜索 323
10.1
SEO 323
10.1.1
SEO簡介 323
10.1.2
開發(fā)時要考慮SEO 324
10.1.3 關(guān)于搜索 326
10.2
Lucene.Net簡介和分詞 328
10.2.1
Lucene.Net簡介 328
10.2.2
分詞 329
10.2.3
盤古分詞算法的使用 332
10.3
最簡單的搜索引擎代碼 334
10.4
搜索的第一個版本 340
10.5
搜索的優(yōu)化版 349
10.5.1
熱詞統(tǒng)計 349
10.5.2
熱門搜索 354
10.5.3
標(biāo)題和內(nèi)容都支持搜索并高亮展示 357
10.5.4
與查詢、或查詢、分頁 358
第11章 財務(wù)對賬系統(tǒng) 366
11.1
需求 366
11.2
前臺UI框架搭建 367
11.3
菜單特效 374
11.4
面板折疊和展開 376
11.5
tab多頁簽支持 379
11.6
Controller和View的交互 381
11.7
增改查匹配 389
11.8
統(tǒng)計報表 407
11.9
服務(wù)器端排序 425
11.10
從ASP.NET MVC中導(dǎo)出Excel文件 428
11.10.1
異步導(dǎo)出 429
11.10.2
實時導(dǎo)出 431
11.11
數(shù)據(jù)同步 432
第12章 通用角色權(quán)限管理系統(tǒng)
434
12.1
需求分析 434
12.2
技術(shù)選型 434
12.3
數(shù)據(jù)庫設(shè)計 435
12.4
架構(gòu)搭建 439
12.4.1
新建解決方案和項目 439
12.4.2
通用層搭建 441
12.4.3
數(shù)據(jù)訪問層搭建 442
12.4.4
業(yè)務(wù)邏輯層 459
12.4.5
UI層 465
12.5
功能實現(xiàn) 466
12.5.1
用戶登錄 466
12.5.2
采用分布式的方式記錄異常日志 472
12.5.3
授權(quán) 474
12.5.4
增刪改查 475
12.6
運行項目 475