俗話說的好,有一就有二,無三不成禮。兩年多前出版了人生第一本書〔 ASP.NET MVC 2 開發實戰〕,獲得廣大開發人員的肯定與迴響,還曾經一度爬上天瓏排行榜冠軍,這些對我來說都是美好且難得的回憶。一年多前,也應邀翻譯了一本〔Windows Phone開發實戰〕書籍,還藉此提升了英文閱讀能力,也算有所收穫。今年,排除一切困難,在百忙之中抽空完成了前年這本書的改版,名為〔 ASP.NET MVC 4 開發實戰〕且已在幾天前正式出版上市,趁著這次新年四天年假,著實是看書的大好時機,大家加油! (^_^)
ASP.NET MVC 問世已久,幾年前或許有人會擔心 ASP.NET MVC 框架是否能用在實務的專案上,也擔心用在新專案上是否真能改善開發效率與品質,但筆者這幾年下來,已經累積數十件網站專案改用 ASP.NET MVC 框架來開發,不但運作的十分順暢,而且也能讓完全不懂 ASP.NET MVC 的新手迅速理解核心觀念與開發架構,相信只要讀者擁有正確的觀念、學習到關鍵的核心技術,很快的就能活用在工作與專案上。
本書主要分成三大部分,將以循序漸進的方式,帶領各位揭開 ASP.NET MVC 4 的神秘面紗,導引各位建立正確的觀念,以及實際體驗 ASP.NET MVC 4的強大魅力。
第一篇:基礎觀念篇
第1章:在學習 ASP.NET MVC 之前
本章將介紹 ASP.NET MVC 的基礎知識,幫助你瞭解 ASP.NET MVC 的輪廓。由於著重於觀念,如果覺得看不懂,可先直接跳過,待後續的章節讀完之後,再回頭閱讀或許更能幫助你建立正確的觀念。
第2章:建立正確的開發觀念
主要說明使用 ASP.NET MVC 進行網站開發時應有的正確觀念。強大的工具若沒有正確的觀念支持,就像是給你一台馬力強又省油的手排車,而你不知道離合器如何使用是一樣的,也許你試了一段時間後,覺得車子還是開不快時,就提前放棄了一部好車。本章最後也整理了初學者對 ASP.NET MVC 經常會問的問題,並逐一進行回答。
第3章:新手上路初體驗
將介紹Visual Studio 2012開發環境與操作技巧,並利用Visual Studio 2012建立你的第一個 ASP.NET MVC 專案,讓讀者親身體驗 ASP.NET MVC 在進行實務開發時的完整過程,相信在逐步教學的帶領之下能讓現有的ASP.NET Web Form開發人員迅速瞭解與 ASP.NET MVC 開發差異,進而快速上手。
第二篇:技術講解篇
第4章:Routing與 ASP.NET MVC 生命週期
想要掌握 ASP.NET MVC ,最重要的是瞭解網址路由 (Routing) 與執行生命週期的重要觀念。網址路由在 ASP.NET MVC 有兩個目的,第一個是比對透過瀏覽器傳來的HTTP要求,並對應到適當的Controller與Action進行處理;另一個目的則是決定 ASP.NET MVC 應該輸出什麼樣的網址回應給瀏覽器。雖然跳過本章仍然可以成功建置 ASP.NET MVC 網站,但瞭解它能幫助你理解 ASP.NET MVC 執行時的先後順序,進而減少犯錯的機會。
第5章:Model相關技術
在 ASP.NET MVC 開發的過程中,通常Model (模型) 是整個專案首要開發的部分,所有需要資料存取的地方都需仰賴Model提供服務。本章將從最基本的ORM觀念講起,介紹Visual Studio 2012內建的SQL Server 2012 Express LocalDB資料庫,以及學習如何使用Entity Framework Code First快速建立資料模型,並利用Code First資料庫移轉功能簡化資料庫操作的複雜度。最後還會介紹如何手動建立檢視資料模型(ViewModel),並透過部分類別的擴充達到基本的欄位驗證。
第6章:剖析Controller相關技術
ASP.NET MVC 的核心就是Controller (控制器),負責處理瀏覽器傳來的所有要求,並決定回應的內容,但Controller並不負責應如何顯示內容,僅回應特定型態的內容給 ASP.NET MVC 框架,而View才是決定回應內容的重要角色。本章也將會應用到第2章所提及的「關注點分離」、「以習慣取代配置」、「不要重複你自己」等觀念,讓你邁入 ASP.NET MVC 的殿堂,發現 ASP.NET MVC 的核心之美。
第7章:View資料呈現相關技術
View 負責資料的呈現,所有呈現資料的邏輯都會由View來控管,不過,View開發應該是整個 ASP.NET MVC 專案最花時間的,因為與顯示邏輯相關的技術五花八門,本章將會介紹許多 ASP.NET MVC 裡內建的 View 開發技術,以迅速解決各式複雜的開發情境。此外,從 ASP.NET MVC 3 開始新增的 Razor 語法,是一種有別於傳統 ASP.NET Web Form 的全新撰寫風格,在本章也會詳加闡述所有細節,讓讀者能在最短的時間內學會這個嶄新、優異的 Razor 語法。
第8章:Area區域相關技術
將介紹如何利用 ASP.NET MVC 的Area (區域) 機制,協助你架構較為大型的專案,讓獨立性高的功能獨立成一個 ASP.NET MVC 子網站,以降低網站與網站之間的耦合性,也可以透過 Area 的切割讓多人同時開發同個專案時,減少互相衝突的機會。
第三篇:開發實戰篇
第9章:進階實戰:電子商務網站開發
本章將透過第二篇所習得的知識,以一套完整的電子商務網站為藍圖,詳述 ASP.NET MVC 4開發流程與分享許多實務開發技巧,從資料模型規劃、控制器架構規劃、建立檢視頁面、加入資料庫功能與購物車功能,最後再介紹如何強化現有 ASP.NET MVC 專案與資料分頁技巧,相信在融會貫通之後,即可有效運用於其他更複雜的專案上。
第10章: ASP.NET MVC 開發技巧
本章將整理一些在實務上經常使用的開發技巧。包括:強化網站安全性、多國語言支援、使用Visual Studio程式碼範本快速開發、如何在 ASP.NET MVC 與ASP.NET Web Form之間傳遞資料、如何對 ASP.NET MVC 4原始碼進行偵錯等、使用Visual Studio程式碼範本快速開發等等。雖然善用工具能有效提升開發效率,但還是要記得,擁有正確的觀念與紮實的技術,才是開發效率提升的不二法門。
第11章:安裝部署
部署網站往往是一件麻煩事,因為在安裝部署的過程中,經常有許多步驟要執行,對於許多對 IIS/SQL 不太熟悉的新手來說,部署網站變成一件非常困難且危險的事。Visual Studio 2012 在 ASP.NET 網站部署方面提升了不少能力,有助於讓你將現有網站快速且簡便的發佈到遠端的IIS伺服器上,而免除了許多繁複的設定程序。此外還整理了幾個部署 ASP.NET MVC 的常見問題,當遇到問題時可供讀者參考。
§ 勘誤聲明 §
就在本書出版後,親自拿到實體書的當下,才翻開來看幾頁,就立刻意識到一件很糗的事,也就是本書的「導讀」完全忘記更新,也就是其內容與兩年前的版本如出一轍,關於這點先跟各位購買第一刷的讀者說聲抱歉!
因為本書改版幅度不小,所以我打從一開始就決定「最後」在來寫導讀部分。對我來說,寫書的過程實在太過艱辛,不斷的想辦法擠時間出來撰稿,寫到最後完稿的那一刻完全鬆懈,也完全忘記有「導讀」的存在,實在太糟糕啦! Orz
另外特別感謝細心的 Chung-Yuan Wu 網友提供以下勘誤:
- P.45 倒數第 4 行
- P.57 第 3 行
- P.234 第 2 行
- P.301 第 3 行
- Length 前面的那個怪怪的符號不是亂碼,是「問號」喔!
感謝 Jeff Wu 提供以下勘誤 (2013-01-01):
- P.122 第一個程式碼範例最後一行少了 VirtualPath 結尾,如下紅字部分:
@RouteTable.Routes.GetVirtualPath(
Request.RequestContext,
new RouteValueDictionary(new {page = 1})
).VirtualPath
- P.307 第 2 個範例程式,要把:
@Html.TextBox("UserName", "Value", new { id = "testID" })
改成:
@Html.TextBox("UserName", "will", new { id = "testID" })
感謝 Winf Lin 提供以下勘誤:
- P.124 第一行的 /Views/Home/About.aspx 應改成 /Views/Home/About.cshtml
此書二刷之後發現的錯誤:
感謝 Hans 提供以下勘誤 (2013-01-08):
- P.92 第 1 個表格中的範例程式,要把:
@Html.DisplayNameFor(model=>model.姓名)
@Html.LabelFor(model=>model.姓名)
改成:
@Html.DisplayNameFor(model=>model.Email)
@Html.LabelFor(model=>model.Email)
感謝 Trevor 提供以下勘誤 (2013-01-12):
- P.206 中 TIPS 的最後一段,要將:
改成:
感謝 Chien-Hung Lai 提供以下勘誤 (2013-01-14):
- P.65 表 3-1 在使用技術為 ASP.NET MVC 的地方,所有 .aspx 都要改成 .cshtml ( 有兩處要改 )
- P.68 第一段文字最後的 View\Home\Index.aspx 要改成 View\Home\Index.cshtml
- P.77 貼心提醒最後一行的 Index.aspx 要改成 Index.cshtml
感謝 Chris 提供以下勘誤 (2013-01-16):
- P.275 中間的那張圖片,應該改成以下圖片:
感謝 Winf Lin 提供以下勘誤 (2013-01-20):
- P.84 第 1 段第 1 行,要將:
改成:
Views\Guestbook\About.cshtml
感謝 maro 提供以下勘誤 (2013-01-22):
- P.309 第 2 段範例程式,要將:
@Html.DropDownList("List", ViewData["Item"] as SelectList, "請選擇")
改成:
@Html.DropDownList("List", ViewData["List"] as SelectList, "請選擇")
感謝 Winf Lin 提供以下勘誤 (2013-01-24):
- P.231 第 1 段第 2 行有漏一個字,要將:
改成:
感謝 Hans 提供以下勘誤 (2013-02-08):
- P.340 的表 7-13 中,第4個範例之說明部分,要將:
指定HomeController下名稱為About的Action帶有參數id
改成:
指定HomeController下名稱為About的Action帶有參數PageNo
感謝 阿佐 提供以下勘誤 (2013-03-30):
- P.368 章節【9-2-6 訂單明細】的範例程式,也就是 OrderDetail 這個類別中,少寫了一段 Amount 屬性(Property),要補上:
[DisplayName("購買數量")]
[Required]
public int Amount { get; set; }
感謝 Winf Lin 提供以下勘誤 (2013-04-28):
- P.384 第 1 個程式碼範例的倒數第 2 行,要將:
@Ajax.ActionLink("加入購物車", "AddToCart", "Cart", ajaxOption)
改成:
@Ajax.ActionLink("加入購物車", "AddToCart", "Cart", new { ProductID = Model.Id }, ajaxOption)
相關連結