The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

新書出版:〔ASP.NET MVC 4 開發實戰〕已於 12/20 上市

俗話說的好,有一就有二,無三不成禮。兩年多前出版了人生第一本書 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 行
    • Gi => Git
  • P.234 第 2 行
    • ViewData => ViewBag
  • 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 的最後一段,要將:
    由於 Login() 動作方法
    改成:
    由於 DoWork() 動作方法

感謝 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\Home\About.cshtml
    改成:
    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 行有漏一個字,要將:
    好讓這些資__可以傳遞給View使用
    改成:
    好讓這些資可以傳遞給View使用

感謝 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)

 

相關連結