Scott昨天終于在其blog上放了一篇東西出來(這家夥現在産能嚴重不足),看了一下有些欣喜,俺就在這說一下,希望對大家有所幫助。
本文并非純翻譯;
水準有限,有說的不清楚的或者不對的地方還望大家海涵。磚頭還是留給社會主義四個現代化建設吧。
俺還是視圖,但是俺終于甩掉了Code-Behind檔案!
這太不容易了,令人诟病的不倫不類的代碼後置終于被槍斃了。微軟在聽取了許多的社群回報後決定對視圖作出這個更改。預設情況下,我們将不會看到那個别扭的.cs/.vb檔案伴屁颠屁颠的跟在本來很單純的view後面同時出現。這個改動幹掉了很多的沒用的代碼後置檔案(當然,項目越大越明顯),更重要的是它使得視圖隻專注于它該做的事情--呈現。
其實這很囧的,其實原本就應該是這樣。(看圖,幹淨多了的解決方案)
現在的Beta版中,俺們隻能通過使用CLR泛型更改視圖的繼承屬性來剔除代碼後置。不過這種方式如果微軟不說你就很難發現,而且的确是有些晦澀。。。現在,在Asp.Net MVC RC中我們已經可以在直接使用c#/vb.net文法來更改視圖的繼承屬性了。
<a href="http://www.cnblogs.com/images/cnblogs_com/024hi/WindowsLiveWriter/ASP.NETMVCRCView_722C/image_28.png"></a>
不使用Code-Behind的另外一個好處就是當我們添加一個視圖到目前項目後立即就可以獲得在視圖中的代碼智能感覺。而在Beta及更早的版本中我們不得不在添加一個視圖之後重新編譯一次。(經常有朋友問這個問題“我按Html.怎麼不出現任何Helper的提示呢”,其實就是這個原因)。
視圖可以使用頂級的模型屬性(Model Property)
俺們以前經常使用ViewData.Model
<a href="http://www.cnblogs.com/images/cnblogs_com/024hi/WindowsLiveWriter/ASP.NETMVCRCView_722C/image_30.png"></a>
現在我們可以直接這樣
<a href="http://www.cnblogs.com/images/cnblogs_com/024hi/WindowsLiveWriter/ASP.NETMVCRCView_722C/image_32.png"></a>
效果都是一樣一樣一樣的。唯一的好處就是少打了八個字母和一個點。
HtmlHelper及AjaxHelper中可以使用Lambda表達式與Model通信
在beta中,由于HtmlHelper及AjaxHelper并未在其簽名中暴露model type,是以俺們要使用Lambda擴充Helper與Model通信就不得不通過ViewPage<TModel>基類。不過在RC版中這個問題得到了改善。此次微軟在ViewPage<TModel>中暴露了兩個新的類型:HtmlHepler<TModel>和AjaxHelper<TModel>。從今以後俺們就可以在于Model通信的時候通過Lambda表達式建構強類型的HtmlHelper和AjaxHelper擴充方法啦。
接下來是Scott提供的一個簡單的強類型TextBox helper的例子
<a href="http://www.cnblogs.com/images/cnblogs_com/024hi/WindowsLiveWriter/ASP.NETMVCRCView_722C/image_34.png"></a>
然後就可以直接在視圖中這麼用啦,而且這麼做也就意味着還将得到vs的代碼智能感覺的支援哦。
<a href="http://www.cnblogs.com/images/cnblogs_com/024hi/WindowsLiveWriter/ASP.NETMVCRCView_722C/image_36.png"></a>
其他
文章中還提及了RC中的很多新的改進,比如IDataErrorInfo、新提供的FileResult 和 JavaScriptResult ActionResult類型、内置的JQuery智能感覺支援、可擴充性的提升以及即使不提大家也曉得的Bug修複。
還有一些減時增産的内容這裡也就不說了,有興趣的可以去他Blog裡面找,連結上面給出來了。
本文轉自紫色永恒51CTO部落格,原文連結:http://www.cnblogs.com/024hi/archive/2008/12/20/1358802.html ,如需轉載請自行聯系原作者