[翻譯]ASP.NET MVC 3 RC 發布通告
今天早上,ASP.NET組發布了ASP.NET 3 RC版(release candidate)。你們可以從這里進行下載here.
ASP.NET MVC 3是個很完美的發布,增加了大量的功能改進。它可以向后兼容ASP.NET MVC V1 和 V2,可以輕易的升級你現有的項目(可以閱讀發布須知,根據里面的步驟去做)。你還可以通過我之前發表的博客文章來學習ASP.NET MVC 3的很多功能。
今天的ASP.NET MVC 3 RC build 包含了一些附加的功能改進(除了修正了一些bug外,還有工具改進等等)。這篇博文涵蓋了今天的發布的所有改進細節。請查看我以前的文章以了解更多的關于ASP.NET MVC 3 previews/betas版的特性和改進的介紹
Visual Studio對Razor的智能提示支持:
Visual Studio和免費的Visual Web Developer Express提供了對Razor-based 視圖模板的支持。當你在razor based視圖模板里編輯時,支持HTML, C#, VB, JavaScript 和 CSS的智能提示:
你可以獲得完全的C#/VB代碼的智能提示,包括HTML helper方法(所有的已經存在于ASP.NET MVC的helper方法同樣可以在Razor based 視圖下良好的工作。
我們同樣提供了Razor關鍵詞和指令的智能提示。
注意:參見下面的圖所示的,當設置@model指令給一個Product時,強類型的HTML helpers現在可以正確在“Product” 類里提供智能提示。
我們仍在對editor做最后的性能測試,如果你遇到這樣的問題:智能提示好像不能工作或者看起來比較慢。請給我們發送報告,這樣我們可以解決它。
NuGet 管理包
我上個月發了一篇文章是關于一個新的,開源管理包的,那時我們稱呼它為“NuPack”,在此我們繼續稱它為NuPack to NuGet。今天ASP.NET MVC 3 release可以把它作為安裝的一個選擇進行自動安裝。
你可以很容易的在你的項目里使用NuGet下載和安裝商業的和開源庫。比如:安裝Nhibernate和LINQ extension library,我可以在Visual Studio 的NuGet管理包命令行輸入“install-package NHibernate.Linq”
當我敲入“enter”鍵時,NuGet將會自動下載所有的類庫或者他們的依賴項然后建立我自己的ASP.NET MVC 3區使用它。
現在有數以百計的.net開源庫在NuGet包的feed里,以后還會繼續的增加。我們認為NuGet可以使得所有的.net開發人員通過社區來改變和共享這些功能,以創建更加好的.Net項目k
參看Scott Hanselman’s的講話
Scott Hanselman 今年談了很多關于PDC的東西,他把它稱為“ASP.NET + Packaging + Open Source = Crazy Delicious”。主要講了如何使用ASP.NET MVC 3, Razor, NuGet, EF Code First, SQL CE 和 其他的一些比較酷的工具做一個完整項目。
你可以觀看在線演講或者下載來看。
- Low Bandwidth WMV Video (about 258 megs)
- Low Bandwidth MP4 Video (about 120 megs)
我強烈建議你們看看這個視頻,它是很有趣的,演示ASP.NET MVC 3 stack (特別是 NuGet)如何在一起工作的。
Partial Page Output Caching
部分頁輸出緩存
ASP.NET MVC在第一版的時候就開始支持整頁緩存。從ASP.NET MVC V3開始,我們也可以支持部分頁緩存了。這可以很容易的使你部分緩存或者一個response的片段。在很多情況下,這是很有用的。
緩存頁面的一個區域是很容易做到的。你可以在一個視圖的子action中簡單的封裝你認為需要緩存的區域。比如:下面我們有一個product列表的頁,我想緩存在頁面中緩存“Daily Specials”部分。
在上面,我使用Html.Action() helper方法去調用SalesController.DailySpecials()子action。注意:我在上面傳遞了一個category參數,這樣我可以定制category。我是基于產品類型來顯示用戶正在瀏覽的產品。(比如他們正在看“computer”產品,我可以顯示一系列的和“computer”相關的東西,如果他們正在瀏覽(“baby” 產品我可以展示尿布).
下面是SalesController.DailySpecials()方法的代碼片段。它獲取合適的產品列表,然后使用Razor partial視圖模板進行展示。
注意在DailySpecials上面有個attribute,它指示需要緩存的部分內容(緩存一小時)。我們一樣可以根據category參數來自動緩存內容。
如果我們有10個產品類,我們的DailySpecials方法將會緩存10個不同的列表,這些不同的列表(公司或尿布)將會依賴用戶的瀏覽進行緩存。重要的是:如果這些部分內容被緩存起來了,我們不用訪問數據庫或者處理代碼邏輯,這將會減輕服務器的負擔和提升響應速度。
這個新的裝置提供了完美清晰的和容易的方式添加你部分頁緩存到你的項目中去。
隱式javascript和驗證
我在我的一些博文(my blog post)中討論了幾個在ASP.NET MVC 3中的驗證和JavaScript/AJAX改進(first ASP.NET V3 preview release)
其中一個比較出色的ASP.NET MVC V3的改進是AJAX 和 Validation helpers將會默認使用unobtrusive JavaScript。隱式javascript可以避免混雜javascript腳本到html標簽里,取代的是,可以使用HMTL5的數據約定進行代碼分離,這可以很方便的在舊的瀏覽器包括IE6上工作。這會使你的HTML更加小巧和清晰,可以更加隨意的切換和定制js庫。ASP.NET MVC 3的Validation helpers現在默認使用jQueryValidate插件。
默認開放客戶端驗證
以前各種版本的ASP.NET MVC(包括上個月的ASP.NET MVC V3 beta),你需要顯式的在視圖里調用Html.EnableClientValidation()去啟動客戶端驗證。從RC版開始,我們不需要那么做了,客戶端驗證(使用隱式方法(unobtrusive approach))默認是啟動的。(你可以通過web.config配置來關閉客戶端驗證)。
你仍然需要在你的站點中引用相關的jQuery+jQuery驗證庫以使用客戶端驗證。因為顯式的引用javascript文件,你能夠選擇宿主在你的服務器上或者從CDN(內容傳輸網絡)引用他們,比如微軟或者Google的。
遠程驗證
今天RC版的一個新的附加的驗證特性就是通過[Remote]驗證attribute使你能夠利用jQuery驗證插件的遠程驗證支持。這可以促使客戶端驗證庫能夠自動的調用定義在服務端的自定義方法去執行驗證邏輯,而這些方法之前只能在服務端完成。
細粒度的請求驗證
ASP.NET MVC包含內置的請求驗證支持以協助避免XSS和HTML注入攻擊。有時候,在某些情況下,你需要顯式的關閉請求驗證,這樣用戶可以提交HTML的內容(比如博客作者或者CMS內容編輯)
現在你可以添加[SkipRequestValidation] attribute到models 或者 viewmodels,以禁用請求驗證
添加上面的attribute到你的model/viewmodel,僅需一次設置就可以在任何情況下應用他。
Other Improvements in the RC
RC版的其他改進
下面是今天的RC版的一些比較好的改進:
改進的“New Project”對話框
當你創建一個ASP.NET MVC 3項目時,對話框如下:
上面的對話框已經被擴展了,你可以添加額外的啟動程序模板,視圖引擎和單元測試框架。我們以后還會增加啟動程序模板(將會顯示在列表里)使你能夠更好的創建新項目。
Scaffolding Improvements
許多的小的但是不錯的改進已經加入到默認的ASP.NET MVC scaffold templates,這些模板將會很好的識別models的ID/主鍵,然后恰當的處理他們。(比如他們現在可以創建合適的“edit/delete”等鏈接。這些“Create/Edit”現在可以默認使用Html.EditorFor()來代替Html.TextBoxFor(),這樣你就可以比較輕易的定制你的models展示
添加視圖對話框的改進
當你使用“Add->View”對話框添加一個強類型視圖的時候,添加視圖對話框可以過濾掉很多不可用的類型,以某種存儲或者組織的形式使你更加容易找到它
對Session-less Controller的支持
你現在可以指示你是否需要一個session-state的controller類,如果這樣,你可以設置它可讀寫或者只讀。
沒有Razor Model Dynamic時
如果你不想在Razor視圖中指定一個@model指令,頁面上的“model”屬性將會默認動態的而不是object。這樣你可以執行延遲綁定,之前你需要在頂行添加一個‘@model dynamic”才能做到。
新的關于Html.LabelFor() 和 Html.LabelForModel()的重載
關于LabelFor() 和 LabelForModel()的新的重載方法使你能夠隨意的指定或者 重載label text。
下載相關
在here你可以找到ASP.NET MVC 3 RC的安裝程序鏈接。它目前使用于VS 2010和免費的Visual Web Developer 2010 Express。
在安裝這個版本之前請確認你已經卸載了任何之前已經安裝ASP.NET MVC 3 releases,當然也包括之前的ASP.NET Web Pages安裝程序。
摘要
今天的ASP.NET MVC 3 RC有很多的優勢使ASP.NET MVC的web開發更加好用。如果你對這次發布由任何的問題或者建議,請在www.asp.net的ASP.NET MVC forum里提交。ASP.NET MVC團隊將會密切關注并提供相應的幫助。我們計劃花費幾周時間來關注這些回饋,協調完成和解決一些bug。對你提供的問題我們先表示感謝。