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