基本信息
作者: 黃保翕(Will保哥) 陳酉玫 李楊
出版社:電子工業出版社
ISBN:9787121127885
上架時間:2011-3-7
出版日期:2011 年3月
開本:16開
頁碼:1
版次:1-1
內容簡介
《asp.net mvc 2開發實戰》以循序漸進的方式揭開asp.net mvc的神秘面紗,幫助開發人員將現有的asp.net web forms項目轉移到asp.net mvc架構,引導讀者建立正確的開發觀念,並搭配visual studio 2010開發工具,帶領讀者體驗asp.net mvc的強大魅力。
《asp.net mvc 2開發實戰》主要分成3篇。基礎觀念篇介紹了開發人員在學習asp.net mvc之前需要了解的技術和觀念,以及mvc架構的基礎知識。技術講解篇針對asp.net mvc 2的各項開發技術進行解析,以幫助開發人員解決實際問題。開發實踐篇通過一套完整的留言板系統案例詳述asp.net mvc 2的開發技巧與流程,以及asp.net mvc的安裝部署和單元測試方法。
《asp.net mvc 2開發實戰》適合對mvc架構感興趣的asp.net開發人員閱讀。
目錄
《asp.net mvc 2開發實戰》
第1篇 基礎觀念篇
第1章 在學習asp.net mvc之前 2
1.1 何謂mvc 3
1.1.1 何謂model 3
1.1.2 何謂view 4
1.1.3 何謂controller 5
1.2 mvc架構初探 6
1.2.1 關聯性 6
1.2.2 獨立性 7
1.3 為什麼要使用asp.net mvc 8
1.3.1 分解關注點與可維護性 8
1.3.2 開放性與社區支持 9
1.3.3 開發工具與開發效率 10
1.3.4 易於測試的架構 10
1.3.5 易於分工的架構 11
總結 11
第2章 建立正確的開發觀念 12
2.1 分解關注點 13
2.2 以習慣取代配置 13
.2.3 對開發asp.net mvc項目的建議 14
2.4 asp.net mvc中常見的問題 18
總結 25
第3章 新手上路初體驗 26
3.1 認識visual studio 2010 27
3.1.1 解決方案資源管理器視窗 27
3.1.2 伺服器資源管理器視窗 27
3.1.3 工具箱視窗 27
3.1.4 輸出視窗 28
3.1.5 錯誤列表視窗 28
3.1.6 擴充管理器 29
3.1.7 代碼段管理器 29
3.2 創建第1個asp.net mvc項目 30
3.2.1 用asp.net mvc 2項目模板創建項目 30
3.2.2 創建數據模型 38
3.2.3 創建控制器和動作 41
3.2.4 創建視圖 42
3.2.5 在視圖中創建視窗 44
3.2.6 通過action接收視窗數據 46
3.2.7 實現留言顯示功能 49
3.3 學習mvc時的注意事項 53
3.3.1 了解不同的項目類型 53
3.3.2 初學者常犯的錯誤 53
3.3.3 小心使用request對象和response對象 54
3.3.4 不要在視圖中編寫過多的程式邏輯 54
3.4 改良asp.net mvc項目 55
3.4.1 使用視圖數據模型 55
3.4.2 使用視窗驗證功能 58
3.4.3 避免用戶重複傳送信息 65
總結 68
第2篇 技術講解篇
第4章 網址路由與asp.net mvc的生命周期 70
4.1 網址路由 71
4.1.1 比對通過瀏覽器傳來的http請求 71
4.1.2 將適當的網址返回瀏覽器 71
4.1.3 默認網址路由 71
4.2 http請求的url如何對應網址路由 73
4.2.1 網址路由範例 73
4.2.2 為網址路由加上限制條件 75
4.3 網址路由如何在asp.net mvc中生成網址 76
4.4 asp.net mvc的執行生命周期 81
4.4.1 網址路由比對 81
4.4.2 執行controller和action 83
4.4.3 執行view並返回結果 86
總結 87
第5章 用model創建數據模型 88
5.1 model的任務 89
5.2 創建基礎數據模型 89
5.2.1 用linq to sql自動創建數據模型 90
5.2.2 用entity framework自動創建數據模型 93
5.2.3 手動創建數據模型 98
5.3 擴充基礎數據模型 99
5.3.1 定義model的metadata 100
5.3.2 自定義metadata驗證屬性 104
5.4 實現庫模式 104
總結 106
第6章 剖析controller的相關技術 107
6.1 controller的責任 108
6.2 controller的類與方法 108
6.3 controller的執行過程 109
6.4 動作名稱選取器 111
6.5 動作方法選取器 112
6.5.1 nonaction屬性 113
6.5.2 httpget屬性、httppost屬性、httpdelete屬性和httpput屬性 113
6.6 actionresult類 114
6.6.1 viewresult類 115
6.6.2 partialviewresult類 117
6.6.3 emptyresult類 117
6.6.4 contentresult類 118
6.6.5 fileresult類 119
6.6.6 強制下載檔案時需注意中文檔案名稱的問題 122
6.6.7 javascriptresult類 124
6.6.8 jsonresult類 124
6.6.9 redirectresult類 126
6.6.10 redirecttoroute類 126
6.7 viewdata與tempdata概述 128
6.7.1 viewdata 128
6.7.2 tempdata 129
6.8 模型綁定 131
6.8.1 簡單模型綁定 131
6.8.2 使用formcollection類獲取視窗數據 132
6.8.3 複雜模型綁定 132
6.8.4 多個複雜模型的綁定 134
6.8.5 判斷模型綁定的結果 136
6.8.6 使用bind屬性限制可被更新的model屬性 138
6.9 動作過濾器 141
6.9.1 授權過濾器屬性 142
6.9.2 動作過濾器屬性 145
6.9.3 結果過濾器屬性 147
6.9.4 異常過濾器屬性 149
6.9.5 自定義動作過濾器屬性 150
總結 152
第7章 view的相關技術 153
7.1 view的責任 154
7.2 不要用asp的觀念來編寫asp.net mvc程式 154
7.3 view如何從action中獲取數據 154
7.3.1 如何正確分配view 155
7.3.2 使用弱類型模型獲取數據 156
7.3.3 使用強類型模型獲取數據 157
7.4 html輔助方法 158
7.4.1 如何使用html輔助方法 158
7.4.2 html輔助方法的套用實例 160
7.4.3 強類型輔助方法 165
7.4.4 dynamic data對asp.net mvc的支持 166
7.4.5 url輔助方法 167
7.4.6 ajax輔助方法 169
7.4.7 自定義html輔助方法 170
7.4.8 tagbuilder類詳解 173
7.5 masterpage模板 176
7.6 部分視圖 178
7.6.1 什麼是部分視圖 178
7.6.2 如何創建一個部分視圖 179
7.6.3 如何調用部分視圖 180
7.6.4 部分視圖的高級套用 181
7.6.5 用renderaction() 方法載入部分視圖 184
總結 185
第8章 area的相關技術 186
8.1 何時需要使用area切割網站 187
8.2 如何在現有項目中新建area 188
8.3 如何設定area的網址路由 189
8.4 默認路由與area路由的優先權 190
8.5 就算使用area,controller的名稱還是有衝突的 190
8.6 如何指定默認網站與area網站的連線 191
總結 192
第3篇 開發實踐篇
第9章 mvcguestbook高級實戰 194
9.1 分析需求與創建網站雛形 195
9.1.1 規劃資料庫結構 195
9.1.2 創建基礎數據模型 196
9.1.3 規劃網站功能 196
9.1.4 設計controller與action 197
9.1.5 創建基礎頁面 200
9.2 實現會員機制 201
9.2.1 會員註冊機制 201
9.2.2 會員登錄/註銷功能 212
9.3 實現留言機制 219
9.3.1 編寫留言列表 219
9.3.2 新建留言列表頁面 221
9.3.3 為留言列表添加分頁功能 222
9.3.4 編寫會員留言功能 225
9.3.5 編寫會員留言視圖 228
9.3.6 編寫版主回復功能 228
9.3.7 創建版主回復視圖 230
9.3.8 編寫刪除留言功能 231
9.4 實現動作記錄機制 232
9.4.1 編寫actionlogattribute動作過濾器屬性 232
9.4.2 將屬性套用到action 233
9.5 強化model的結構 233
9.6 使用控制反轉容器 248
9.6.1 asp.net mvc與autofac的集成 250
9.6.2 asp.net mvc與autofac集成的原理 252
9.6.3 讓autofac自動解析接口和對應的類 252
9.6.4 修正controller的構造符 255
總結 256
第10章 asp.net mvc開發技巧 257
10.1 asp.net mvc的多語系支持 258
10.2 在http回響標題中隱藏asp.net mvc的版本 261
10.3 一起編譯visual studio和view 262
10.4 mvchtmlstring類的開發技巧 265
10.5 在mvc與web forms之間傳遞數據 267
10.5.1 http get方法(querystring集合)和http post方法 267
10.5.2 session 267
10.6 如何調試asp.net mvc原始碼 268
10.6.1 使用 .net framework原始碼逐步調試功能 268
10.6.2 下載asp.net mvc原始碼並添加項目參考 273
10.7 使用visual studio程式模板進行快速開發 279
10.7.1 如何使用程式模板快速生成view 279
10.7.2 如何將內置的程式模板添加到項目中 280
10.7.3 如何修改內置的addcontroller程式模板並自動生成程式代碼 283
10.7.4 如何新建自定義的addview程式模板並自動生成程式代碼 284
10.7.5 深入t4程式生成器 287
總結 287
第11章 安裝部署 288
11.1 如何將網站部署到本地iis中 289
11.2 如何部署遠程iis 294
11.3 如何用命令提示符手動部署 296
11.4 部署asp.net mvc時常見的問題 299
11.4.1 無法載入檔案或組件 299
11.4.2 部署到iis 6之後看不到網頁 300
11.4.3 部署到iis 6或iis 7之後都無法使用網站 302
11.5 部署asp.net 4.0時的注意事項 304
11.5.1 安裝時的注意事項 304
11.5.2 安裝正確的 .net framework包 304
11.5.3 應用程式集區不能跨 .net版本設定 305
總結 305
第12章 單元測試 306
12.1 關於軟體測試 307
12.1.1 何謂單元測試 307
12.1.2 何謂集成測試 308
12.1.3 如何區別單元測試與集成測試 309
12.1.4 何謂測試驅動開發 309
12.2 創建asp.net mvc的單元測試項目 311
12.2.1 單元測試項目的命名規則 311
12.2.2 新建項目時自動創建單元測試項目 311
12.2.3 通過單元測試嚮導創建單元測試項目 313
12.2.4 在controller類中創建單元測試項目 315
12.3 如何編寫asp.net mvc單元測試 315
12.3.1 單元測試的3a模板 316
12.3.2 編寫controller單元測試 316
12.3.3 在visual studio中執行單元測試程式 319
12.3.4 查看程式代碼涵蓋範圍 320
12.3.5 編寫適合進行單元測試的程式代碼 323
12.3.6 使用stub假對象完成單元測試 325
12.3.7 使用mock假對象完成單元測試 327
12.3.8 編寫routing單元測試 330
總結 332
前言
在開始學習ASP.NET MVC之前,我想許多讀者心中應該都有疑惑,尤其是正宗的ASP.NET Web Forms開發者,更可能會對ASP.NET MVC技術給予異樣的眼光甚至誤解。
《ASP.NET MVC 2開發實戰》分為3篇,以循序漸進的方式揭開ASP.NET MVC的神秘面紗,引導讀者建立正確的觀念,實際體驗ASP.NET MVC的強大魅力。
建議閱讀順序:
第1篇→第2篇→第3篇:想按部就班學習ASP.NET MVC的人。
第1篇→第3篇→第2篇:想先感覺程式,再建立觀念的人。
第3篇→第1篇→第2篇:懶得閱讀文字,只想看程式代碼的人。
第1篇 基礎觀念篇
第1章 在學習ASP.NET MVC之前
本章將介紹ASP.NET MVC的基礎知識,幫助你了解ASP.NET MVC的概況。由於本章內容著重於觀念的講解,如果覺得看不懂,可先跳過,待將讀完後續的章節之後再回頭閱讀,或許更能幫助你建立正確的觀念。
第2章 建立正確的開發觀念
本章主要說明使用ASP.NET MVC進行網站開發時應有的正確觀念。強大的工具若沒有正確的觀念支持,就像是給你一台馬力強又省油的手動擋汽車,而你卻不知道離合器應該如何使用一樣——也許當你嘗試了一段時間,覺得車子還是開不快時,就會提前放棄一部好車。本章的最後也整理了一些初學者在學習ASP.NET MVC時經常會問的問題,並逐一進行回答。
第3章 新手上路初體驗
本章介紹如何利用Visual Studio 2010創建一個ASP.NET MVC項目,讓讀者親身體驗ASP.NET MVC實際開發的完整過程。相信在逐步教學的帶領之下,能讓現有的ASP.NET Web Forms開發人員了解其與ASP.NET MVC開發的差異,進而快速上手。
第2篇 技術講解篇
第4章 網址路由與ASP.NET MVC生命周期
想要掌握ASP.NET MVC,最重要的是要了解網址路由(Routing)與ASP.NET MVC生命周期的重要概念。網址路由在ASP.NET MVC中有兩個用途:一個用途是比對通過瀏覽器傳來的HTTP請求,並將其對應到適當的控制器(Controller)與動作(Action)中進行處理;另一個用途是決定ASP.NET MVC應該輸出什麼樣的網址來回響瀏覽器。雖然跳過本章你仍然可以成功地創建ASP.NET MVC網站,但閱讀本章能幫助你理解ASP.NET MVC執行時的順序,進而減少犯錯的機會。
第5章 用Model創建數據模型
在用ASP.NET MVC開發網站的過程中,通常模型(Model)是整個項目中首先要開發的部分,所有需要進行數據訪問的地方都仰賴模型提供服務。本章將講解如何通過Visual Studio 2010自動建立數據模型以及手動建立和查看數據模型,並通過部分類的輔助方法實現基本的欄位驗證,甚至完成商業邏輯驗證,最後通過實現庫模式(Repository Pattern),讓ASP.NET MVC項目更易於進行單元測試與測試驅動開發(Test-Driven Development,TDD)。
第6章 剖析Controller的相關技術
ASP.NET MVC的核心就是Controller,它負責處理瀏覽器傳來的所有請求並決定回響的內容。但Controller並不負責決定如何顯示內容,而是僅將特定類的內容回響給ASP.NET MVC框架。視圖(View)才是決定回響內容的重要角色。本章也會套用第2章提及的“分解關注點”、“以習慣取代配置”、“不要重複你自己”等觀念,帶你邁入ASP.NET MVC的殿堂,發現ASP.NET MVC的核心之美。
↓展開全部內容
序言回到頂部↑
筆者目前任職於多奇數位創意有限公司,擔任技術總監一職,負責公司技術方向的決策。大約在兩年多前,我開始注意到,ASP.NET MVC技術在國外漸漸發展起來。起初,我並不覺得它有什麼特別的地方,但慢慢看到一些國外對ASP.NET MVC的開發觀念與設計方法的討論——好像它真的能夠解決當時ASP.NET Web Forms開發上的難點,例如內置的控制項不好用、控制項套版不易、抽象的ASP.NET Web Forms事件模型經常讓新手搞不清楚狀況、過大的ViewState等,而這些都是我們在日常開發工作中會遇到的問題。
直到2009年初,ASP.NET MVC 1.0正式版上市,除了還在創建與維護中的ASP.NET Web Forms項目不會改動之外,我毅然決然地帶領公司的所有開發人員投入ASP.NET MVC的懷抱,並宣布未來所有新項目皆以ASP.NET MVC技術為主。這是一個重大的決定,也是一個我至今未曾後悔的決定。對我來說,學習一門全新技術的動機很重要。當你因為接觸一門新技術而必須要放棄許多以往的開發經驗時,如果沒有明確的動機並發現轉變的價值,是很難下定決心的。因此,要進入一個全新的技術領域,首先要感受技術的價值,然後是進一步研究技術的細節。
本書的寫作歷時一年多的時間,在這段時間裡,ASP.NET MVC的版本也從ASP.NET MVC 1.0升級到了ASP.NET MVC 2.0。由於ASP.NET MVC的觀念與架構十分優秀、嚴謹,因此,技術升級的過程非常順利,而且開發觀念也不需要重新建立。對開發人員來說,即使升級至ASP.NET MVC 2.0,在學習上也沒什麼負擔。即便是未來的ASP.NET MVC 3.0,微軟的ASP.NET MVC開發團隊也能保證它會與ASP.NET MVC 1.0兼容,早期編寫的程式完全可以順利轉移。新版本的ASP.NET MVC只會繼續在同一套架構上增強功能,並強化對Visual Studio 2010的支持。因此,筆者認為,ASP.NET MVC在未來非常具有可發展性。
筆者曾經想過,我們公司會不會是台灣地區唯一一個只使用ASP.NET MVC技術開發網站項目的公司呢?不過,這並不是重點,重點是我們現在創建的網站不但更加安全、開發速度更快、項目生成和完成的時間更短,最重要的是,網站變得易於維護,質量也更高了,這都要歸功於ASP.NET MVC的技術架構。因為ASP.NET MVC非常強調“分解關注點”的觀念,而且從開發架構上來看,也很容易讓開發人員做到“分解關注點”,這個優勢是ASP.NET Web Forms完全無法匹敵的。
本書集結了筆者在學習與開發ASP.NET MVC時的經驗與心得,希望能帶給所有.NET開發人員一個全新且優秀的選擇。讓我們一起擁抱ASP.NET MVC的世界吧!
能夠順利出版這本書,我要感謝很多人。首先,最感謝的是我的ASP.NET MVC開發團隊,在公司里,他們寫的Code比我寫的字還多出很多很多,本書涉及的很多開發技巧與學習心得都來自於他們。除此之外,Demo、Thomsen、Danny、Bibby協助我撰寫了部分章節,星寂、Jerry幫我完成了許多範例程式。我還要感謝幫我校稿與驗證範例程式的朋友們,如果沒有他們的協助,這本書恐怕很難完成。
同時,也非常感謝悅知文化的編輯Vicky,在我寫作的過程中提供了許多的協助並給予我包容,因為我從來就沒有按照“寫作說明”寫作文章,即便要出書,也還是覺得寫部落格的心情與角度比較符合我的風格。
這是我寫的第一本書,如果讀者對書中的內容或觀念有任何不理解的地方,歡迎到我的部落格、Facebook冬粉專頁或噗浪(Plurk)上與我交流、互動。
黃保翕(Will保哥)