The Will Will Web

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

ASP.NET MVC 2 Preview 1 已經推出,新版功能搶先預覽

ASP.NET MVC 2 Preview 1 已經推出,新版多了 Templated Helpers 的概念,如果對熟悉 Dynamic Data 的人來說應該會覺得很熟悉,概念非常類似,這個功能讓 ASP.NET MVC 對 HTML 的操控能力又更上一層,有興趣的人可以閱讀 ASP.NET MVC 2 Preview 1 Release Note 或看看 Hanselminutes on 9 - ASP.NET MVC 2 Preview 1 with Phil Haack and Virtual Scott 影片,看 Phil Haack 如何用他的大螢幕(雙螢幕)展示 ASP.NET MVC 2 Preview 1 的新功能。

主要的新功能特色有:

1. Templated Helpers

  • 讓你在 View 中顯示資料欄位時,可依據欄位的 DataType 決定要顯示的 HTML,概念跟 Dynamic Data 的 FieldTemplate 類似,只是這是專屬於 ASP.NET MVC 的版本。
  • 總之,這是個超酷的特色,用了才知道好啊!

2. Areas

  • 允許你讓較大型的 ASP.NET MVC 切割成多的不同的子專案,每個子專案都���自己的 Controller 與 Views
  • 每個子專案都是「相對獨立」的 ASP.NET MVC 網站,可有效分割專案,讓多人開發的 ASP.NET MVC 專案的管理性大幅提昇。

3. Support for Data Annotations

  • Data Annotations 可讓你集中管理資料欄位格式的驗證商業邏輯的驗證,徹底簡化程式的複雜度,而這項功能也是在 Dynamic Data 中必備的元素,只是這次才正式搬進 ASP.NET MVC
  • ASP.NET MVC 2 Preview 1 已將 Data Annotations 支援整合到 default model binder 中,所以已經內建可以進行 Server 端驗證了,至於 Client 端驗證的機制可能要等下一版才會出現,而且將會使用 jQuery Validation plugin 當成表單驗證程式的基礎。

4. Strongly Typed UI Helpers

  • 雖然 Strongly Typed UI Helpers 早在 ASP.NET MVC 1.0 Future 就出現,不過以後應該會正式加入所有 MVC 版本中,包括這次 ASP.NET MVC 2 Preview 1
  • 使用 Strongly Typed UI Helpers 可讓你在 View 中使用 Intellisense 功能方便開發,以及可以在編譯時(compile-time)發現程式的錯誤。
  • 只要是 HTML Helpers 的方法名稱(method name)最後有補上 “For” 的就是 Strongly Typed UI Helpers 了! 如下圖示:
     <%= Html.EditorFor(c=>c.Country, "CountryDropDown") %>

5. New [HttpPost] Attribute

  • 新增的 HttpPostAttribute 方便你套用特定 Action 必須使用 HTTP POST 呼叫。
  • 這個新的 Attribute 可以取代之前的 [AcceptVerbs(HttpVerbs.Post)] 用法

6. Default Parameter Values

  • 預設參數值也是個新的設計,在以往 ASP.NET MVC 1.0 在開發時,如果傳入參數為實值型別(Value Type)時,若沒有傳入適當的 Route Value 就會導致 MVC 發生例外事件,現在只要指定預設參數值就不會有此問題了。
  • 在以往我們可能要這樣寫:
  • 現在我們可以這樣寫:
  • 如果未來你用 .NET 4.0 ( C# 4.0 ) 甚至可以這樣寫

7. Binding Binary Data

  • 此版還支援二進位資料格式的 Binding,他可以將 Base64 編碼的資料格式從表單傳入時,自動透過 Default Model Binder 轉譯成目的資料型別,例如:byte[] , System.Data.Linq.Binary 等資料類型。
  • 這類二進位欄位由於 HTML 表單的限制,通常只能利用隱藏欄位(Hidden Field)搭配儲存,通常用來作為同步控制(concurrency control)或簡易的 CAPTCHA 等用途。

對於 ASP.NET MVC 的版本發展,將會在 ASP.NET MVC Roadmap 不定期更新,ASP.NET MVC 開發人員可以來這邊看看。

我個人覺得目前 ASP.NET MVC 在架構上已經很完整了,接下來要發展的東西都只會讓 ASP.NET MVC 專案越來越好開發與管理,請各位拭目以待。但愛用工具列拖曳的人可能會失望,因為 ASP.NET MVC 目前來說完全沒看到有任何所見即所得的開發工具發展的跡象,短期內也應該不會有,還是建議各位多學點 HTML, CSS, JavaScript 吧,這些東西才是網頁開發的基礎啊!

ASP.NET MVC 2.0 預計將隨 Visual Studio 2010 RTM 出貨,但是 ASP.NET MVC 2.0 也會提供 Visual Studio 2008 Service Pack 1 的版本,所以不想升級到 VS2010 的人不必太擔心,我個人還在等 WPF 對中文字形的顯示問題解決了之後才會採用 WPF-based 的產品。

相關連結