ASP.NET MVC 是微軟官方提供的以MVC模式為基礎(chǔ)的ASP.NET Web應(yīng)用程序框架。MVC 將一個(gè)Web應(yīng)用分解為Model、View和Controller,有助于管理復(fù)雜的應(yīng)用程序,并簡(jiǎn)化了分組開發(fā),使得復(fù)雜項(xiàng)目更易維護(hù)。
本書共分為12章,以符合初學(xué)者思維的方式系統(tǒng)地介紹ASP.NET MVC的應(yīng)用技巧,并結(jié)合實(shí)際項(xiàng)目詳細(xì)地介紹如何基于ASP.NET MVC構(gòu)建企業(yè)項(xiàng)目。通過(guò)本書的學(xué)習(xí),讀者可以全面掌握ASP.NET MVC的開發(fā),并從代碼中獲取軟件開發(fā)與架構(gòu)設(shè)計(jì)的經(jīng)驗(yàn)與靈感。
本書具有很大的參考價(jià)值,既適合ASP.NET MVC開發(fā)初學(xué)者閱讀,也適合有一定基礎(chǔ)的ASP.NET MVC開發(fā)人員進(jìn)行技術(shù)強(qiáng)化和經(jīng)驗(yàn)積累,同時(shí)還適合作為高等院校和培訓(xùn)學(xué)校相關(guān)專業(yè)的教學(xué)參考書。
本書是一本非常接地氣的 .NET Web 開發(fā)指導(dǎo)書籍。有別于市面上的同類書籍,它既不像微軟官方資料和Demo那樣照本宣科,也不像大學(xué)教材那樣乏味說(shuō)教。它凝聚了作者在ASP.NET MVC及其相關(guān)技術(shù)的實(shí)際經(jīng)驗(yàn),將實(shí)戰(zhàn)與理論相結(jié)合,介紹如何使用ASP.NET MVC來(lái)進(jìn)行企業(yè)應(yīng)用開發(fā),是初學(xué)者難得的引路書籍。微云數(shù)聚(北京)科技有限公司CEO 張幟
本書所涉及的知識(shí)面非常廣,內(nèi)容涵蓋了ASP.NET MVC開發(fā)中*常使用的技術(shù)和框架,由淺入深,易于讀者理解和掌握,配合作者精心挑選的例子,實(shí)用性強(qiáng),很具實(shí)戰(zhàn)參考價(jià)值。相信本書講解的內(nèi)容能夠使您的Web開發(fā)水平提升一個(gè)臺(tái)階。微軟高級(jí)架構(gòu)師 Terry Zhou
作者年輕、充滿活力,給我*的印象是公司年會(huì)上表演的雙截棍節(jié)目,讓我充分相信程序員是多么優(yōu)秀的職業(yè)。作者能夠在家人身體欠佳的狀況下如期完成本書的編寫,可見其毅力多么堅(jiān)韌。本書能夠讓初學(xué)MVC的讀者有很清晰的技術(shù)路線,而且配套的Demo基本都是在實(shí)際項(xiàng)目中的運(yùn)用,非常值得研究。深圳市跨境翼電子商務(wù)股份有限公司CEO 李君
能夠與作者在同一家公司,并一起完成書中的財(cái)務(wù)對(duì)賬系統(tǒng),是一件讓人短暫痛苦但回想起來(lái)非常開心的事情。作者能堅(jiān)持寫作多年,并將平時(shí)學(xué)習(xí)到的知識(shí)在日常工作的項(xiàng)目中進(jìn)行實(shí)戰(zhàn),這需要非常堅(jiān)韌的毅力。希望本書能夠讓更多讀者看到在企業(yè)項(xiàng)目實(shí)踐中MVC的運(yùn)用過(guò)程,同時(shí)也希望作者能夠繼續(xù)堅(jiān)持擁抱變化。深圳市思創(chuàng)信息技術(shù)有限公司總經(jīng)理 何成
我在公司實(shí)際項(xiàng)目中把《ASP.NET MVC企業(yè)級(jí)實(shí)戰(zhàn)》列為我們重要的中文參考資料。它覆蓋了工作中所有的ASP.NET MVC 技術(shù)要點(diǎn),讓我們的新員工順利過(guò)渡到項(xiàng)目中,作者有深厚的編程和教學(xué)經(jīng)驗(yàn),也盡力把相關(guān)問(wèn)題由淺入深分析清楚,這在MVC的同類書籍中是非常難得的。長(zhǎng)沙道好信息科技有限公司技術(shù)總監(jiān) 周尹
序言
ASP.NET MVC 4是目前大部分IT企業(yè)使用的Web開發(fā)技術(shù),許多互聯(lián)網(wǎng)公司招聘都明確要求熟悉ASP.NET MVC。最近公司在招.NET程序員,我發(fā)現(xiàn)好多來(lái)公司面試的.NET程序員根本沒(méi)有 ASP.NET MVC項(xiàng)目經(jīng)驗(yàn),其中包括一些工作了四五年,甚至八年十年的。還有一些.NET程序員對(duì)ASP.NET MVC的認(rèn)知只是停留在大學(xué)老師教過(guò)、自己學(xué)過(guò)、以前公司用過(guò)……這樣的話在公司項(xiàng)目開發(fā)過(guò)程中往往無(wú)法完成一些稍微復(fù)雜一點(diǎn)的開發(fā)任務(wù)或者只能以一種很low的方式來(lái)實(shí)現(xiàn)一些功能。顯然,這些人是無(wú)法適應(yīng).NET Web開發(fā)浪潮的。所以我決定針對(duì)公司真實(shí)項(xiàng)目用到的ASP.NET MVC技術(shù)寫一本書,以供打算從事.NET Web開發(fā)、無(wú)MVC項(xiàng)目經(jīng)驗(yàn)、MVC不熟或者打算提升.NET Web開發(fā)水平的讀者學(xué)習(xí)參考,以便快速適應(yīng)工作。我是自學(xué).NET的,翻閱過(guò)國(guó)內(nèi)外.NET電子書不下百本,感覺書本上說(shuō)的和企業(yè)里面用的完全是兩碼事。作為一線碼農(nóng),我希望可以同大家分享工作當(dāng)中真正有用的知識(shí)、技術(shù)及技巧。本書以符合初學(xué)者思維的方式,系統(tǒng)地介紹ASP.NET MVC的應(yīng)用技巧,并結(jié)合實(shí)際項(xiàng)目詳細(xì)地介紹如何基于ASP.NET MVC構(gòu)建企業(yè)項(xiàng)目。通過(guò)本書的學(xué)習(xí),讀者可以全面掌握ASP.NET MVC的開發(fā),并可以從代碼中獲取軟件開發(fā)與架構(gòu)設(shè)計(jì)的經(jīng)驗(yàn)與靈感。本書適合ASP.NET MVC的初學(xué)者,欲深入了解ASP.NET MVC開發(fā)的軟件工程師、系統(tǒng)架構(gòu)師和軟件工程師,以及任何對(duì)ASP.NET MVC相關(guān)技術(shù)感興趣的讀者。書中所載技術(shù)均為一線城市中互聯(lián)網(wǎng)企業(yè)所流行的.NET Web開發(fā)技術(shù),具有很強(qiáng)的參考價(jià)值。本書附帶源代碼,以供讀者參考,便于理解書中的內(nèi)容,下載地址(注意數(shù)字和字母大小寫)為:http://pan.baidu.com/s/1dE8X0gp(密碼:4gce)如果下載有問(wèn)題,請(qǐng)電子郵件聯(lián)系booksaga@163.com,郵件主題為ASP.NET MVC企業(yè)級(jí)實(shí)戰(zhàn)。
編 者2017年2月
鄒瓊俊,湖南人,.NET高級(jí)工程師,CSDN學(xué)院講師,專注于.NET Web開發(fā),對(duì).NET Web開發(fā)有較深研究。
目 錄
第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 知識(shí)儲(chǔ)備 13
1.3.1
必備知識(shí)介紹 13
1.3.2
樹立軟件開發(fā)信心 13
1.4
C#語(yǔ)法新特性 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簡(jiǎn)介 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)缺點(diǎn) 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ù)庫(kù) 37
2.3.2
新建項(xiàng)目 39
2.3.3
新增 39
2.3.4
簡(jiǎn)單查詢和延時(shí)加載 40
2.3.5
根據(jù)條件排序和查詢 42
2.3.6
分頁(yè)查詢 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對(duì)象的創(chuàng)建問(wèn)題 50
2.4.4
關(guān)于上下文的使用注意事項(xiàng) 51
2.4.5
EF 跨數(shù)據(jù)庫(kù)支持 51
2.5
Model First 開發(fā)方式 51
2.5.1
創(chuàng)建Model First Demo 52
2.5.2
經(jīng)驗(yàn)分享 60
2.6
Code First 開發(fā)方式 60
2.6.1
創(chuàng)建Code First Demo 61
2.6.2
關(guān)于EF實(shí)例的創(chuàng)建問(wèn)題 68
第3章 初識(shí)MVC 69
3.1
MVC簡(jiǎn)介與三層架構(gòu) 70
3.1.1
MVC簡(jiǎn)介 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 第一個(gè)ASP.NET
MVC程序 75
3.3.1
創(chuàng)建項(xiàng)目 75
3.3.2
項(xiàng)目框架結(jié)構(gòu)說(shuō)明 77
3.3.3
路由映射URL到Action 79
3.3.4
返回string的MVC方法 81
3.3.5
簡(jiǎn)單了解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進(jìn)階 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 語(yǔ)法 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和驗(yàn)證 104
4.4.1
Net MVC請(qǐng)求處理流程 104
4.4.2
MVC模型驗(yàn)證 104
4.5
HtmlHelper 111
4.5.1
HtmlHelper的Action、表單標(biāo)簽 112
4.5.2
HtmlHelper的弱類型與強(qiáng)類型方法 113
4.5.3
HtmlHelper的RenderPartial 116
4.5.4
HtmlHelper的RenderAction 116
4.5.5
HtmlHelper擴(kuò)展方法 117
4.6
ASP.NET MVC分頁(yè) 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測(cè)試 135
5.2 異步Ajax 137
5.2.1
傳統(tǒng)Ajax實(shí)現(xiàn)方式 137
5.2.2
Unobtrusive Ajax使用方式 140
5.2.3
AjaxHelper 141
5.2.4
請(qǐng)求Json數(shù)據(jù) 144
5.3
MVC Areas 146
5.3.1
Area使用入門 146
5.3.2
Area注冊(cè)類放到單獨(dú)程序集 148
5.3.3
Area注冊(cè)控制器放到單獨(dú)程序集 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整體運(yùn)行流程 159
5.5.1
進(jìn)入管道 159
5.5.2
路由注冊(cè) 162
5.5.3
創(chuàng)建MvcHandler對(duì)象 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 刪除無(wú)用的視圖引擎 179
6.4 使用防偽造令牌來(lái)避免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)狀和特點(diǎn) 184
6.6.3
Nginx的事件處理機(jī)制 184
6.6.4
Nginx不為人知的特點(diǎn) 186
6.6.5
Nginx的內(nèi)部模型 186
6.6.6
Nginx如何處理請(qǐng)求 188
6.6.7
Nginx典型的應(yīng)用場(chǎng)景 188
6.6.8
Nginx的應(yīng)用 189
6.6.9
Nginx常見配置說(shuō)明 190
6.6.10
集群案例 195
6.7 常用的Web安全技術(shù)手段 197
第7章 NHibernate 199
7.1
NHibernate簡(jiǎn)介 199
7.1.1
什么是NHibernate 199
7.1.2
NHibernate的架構(gòu) 199
7.1.3
NHibernate與其Entity Framework框架比較 200
7.2 第一個(gè)NHibernate應(yīng)用程序 201
7.2.1
搭建項(xiàng)目基本框架 201
7.2.2
編寫映射文件 206
7.2.3
添加數(shù)據(jù)訪問(wèn)層類 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代碼映射高級(jí)功能 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簡(jiǎn)介 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
在單獨(dú)的配置文件中構(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)建一個(gè)WebService并調(diào)用 256
9.1.2
調(diào)用天氣預(yù)報(bào)服務(wù) 259
9.2
WCF 262
9.2.1
什么是WCF 262
9.2.2
理解面向服務(wù) 263
9.2.3
WCF體系架構(gòu)簡(jiǎn)介 263
9.2.4
WCF的基礎(chǔ)概念介紹 264
9.2.5
創(chuàng)建第一個(gè)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簡(jiǎn)介 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簡(jiǎn)介 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簡(jiǎn)介 306
9.6.2
下載安裝和配置 307
9.6.3
使用mongo.exe 執(zhí)行數(shù)據(jù)庫(kù)增刪改查操作 311
9.6.4
更多命令 313
9.6.5
MongoDB語(yǔ)法與現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)SQL語(yǔ)法比較 315
9.6.6
可視化的客戶端管理工具M(jìn)ongoVUE 315
9.6.7
通過(guò)C#的samus驅(qū)動(dòng)進(jìn)行操作 317
9.6.8
索引 320
第10章 站內(nèi)搜索 323
10.1
SEO 323
10.1.1
SEO簡(jiǎn)介 323
10.1.2
開發(fā)時(shí)要考慮SEO 324
10.1.3 關(guān)于搜索 326
10.2
Lucene.Net簡(jiǎn)介和分詞 328
10.2.1
Lucene.Net簡(jiǎn)介 328
10.2.2
分詞 329
10.2.3
盤古分詞算法的使用 332
10.3
最簡(jiǎn)單的搜索引擎代碼 334
10.4
搜索的第一個(gè)版本 340
10.5
搜索的優(yōu)化版 349
10.5.1
熱詞統(tǒng)計(jì) 349
10.5.2
熱門搜索 354
10.5.3
標(biāo)題和內(nèi)容都支持搜索并高亮展示 357
10.5.4
與查詢、或查詢、分頁(yè) 358
第11章 財(cái)務(wù)對(duì)賬系統(tǒng) 366
11.1
需求 366
11.2
前臺(tái)UI框架搭建 367
11.3
菜單特效 374
11.4
面板折疊和展開 376
11.5
tab多頁(yè)簽支持 379
11.6
Controller和View的交互 381
11.7
增改查匹配 389
11.8
統(tǒng)計(jì)報(bào)表 407
11.9
服務(wù)器端排序 425
11.10
從ASP.NET MVC中導(dǎo)出Excel文件 428
11.10.1
異步導(dǎo)出 429
11.10.2
實(shí)時(shí)導(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ù)庫(kù)設(shè)計(jì) 435
12.4
架構(gòu)搭建 439
12.4.1
新建解決方案和項(xiàng)目 439
12.4.2
通用層搭建 441
12.4.3
數(shù)據(jù)訪問(wèn)層搭建 442
12.4.4
業(yè)務(wù)邏輯層 459
12.4.5
UI層 465
12.5
功能實(shí)現(xiàn) 466
12.5.1
用戶登錄 466
12.5.2
采用分布式的方式記錄異常日志 472
12.5.3
授權(quán) 474
12.5.4
增刪改查 475
12.6
運(yùn)行項(xiàng)目 475