ASP.NET MVC 3 : @model Razor中的新關鍵字

 

原文 :   ASP.NET MVC 3: New @model keyword in Razor

 

兩週之前我們發佈了  ASP.NET MVC 3 Beta Release 。它支持即可實施部署,同時包含了很多不錯的改進、增強。

你可以在我的Beta版發佈博客中看到ASP.NET MVC的3個新的特性摘要。可以閱讀我之前ASP.NET MVC3預覽版博客,學習到新特性之外的功能。

這篇文章是“迷你文章”系列的第一章,我準備寫的是關於ASP.NET MVC3 Beta版功能的詳細描述。在今天的文章裏,我將講述新Razor視圖引擎中新支持的@model指令,它能讓視圖文件更簡潔乾淨。

Razor 基礎

ASP.NET MVC3 有一個名爲"Razor" 的新視圖引擎選項 (同時繼續支持現有的.aspx視圖引擎) 

在我走進Razor (Introducing Razor) 這篇博文中,你將學習到更多Razor 的語法和我們爲什麼要使用它。   

如果你還沒有讀過那篇文章,建議你現在花幾分鐘看看。(下面的文章會假設你已經讀過了) 

當你讀過 走進Razor  這篇文章後,也讀下我的 ASP.NET MVC 3預覽 這篇文章 看一下ASP.NET MVC 3中 Razor 的例子。   

新@model指令 

讓我們看一下在ASP.NET MVC3 Beta版中新加的一個功能 @model 指令。這個指令提供了一個簡潔乾淨的方式去引用視圖文件中的強類型數據。 

看它在實際中的情況,來看一個很簡單的場景,我們想要通過一個產品的URL列出數據庫中產品的分類。

下面用一個簡單的 ProductController 實現了這個功能。它從數據庫返回商品目錄列表,然後將他們返回給視圖文件用適合的HTML 呈現在瀏覽器上。

在 ASP.NET MVC3 首個預覽版中引用數據

如果我們已經在ASP.NET MVC3 首個預覽版中使用過Razor,那麼在我們的Index.cshtml視圖文件的頂部應該有一個@inherit指令塊,標明我們想從視圖文件返回 “System.Web.Mvc.WebViewPage<TModel>” 類型。我們標明想讓視圖文件返回的類型是強類型。

 

 

這是可以工作的(在ASP.NET MVC3中仍然支持),但是有點繁瑣。

 

在 ASP.NET MVC3 Beta 版中使用新關鍵字 @model 引用數據

 

我們在ASP.NET  MVC3 Beta 版中新增了 @model 指令, 當你想在 View 視圖中引用強類型 model 時, 它能夠提供更簡潔乾淨的方式。

 

你現在只需要在你的 Razor 視圖文件頂端 使用@model 引用相關的強類型model 就可以了,不需要再使用 @inherits 或 指定一個視圖基類了。

 

在概念上上面的語法和之前是一樣的(除了少了許多字符外),它更容易閱讀和書寫。

 

下面的 Index.cshtml  視圖文件告訴我們如何呈現出之前最開始截圖的效果。

 

 

你可能會問一個問題: 如果沒有定義,視圖文件從哪裏派生? 默認情況,Razor會讓視圖繼承自System.Web.Mvc.WebViewPage<TModel> 基類。你也可以通過修改視圖目錄下的web.config文件來更改默認基類(除此之外也可以在視圖文件中導入命名空間)。這能幫助你在你的視圖文件中保持乾淨(同時也DRY)的語法,即使你想使用自己創建的定製視圖基類。

 

注意: Visual Studio 在Razor內的代碼/標記智能感知在本月Beta版還不支持。你能在幾個星期之後看到它們——在Razor文件中將支持針對HTML,Javascipt,CSS和C#/VB編碼的全部代碼智能感知。

 

總結

 

我們在ASP.NET MVC3 和Razor發佈中所堅持的宗旨是讓你所寫的代碼更乾淨簡潔。上面提到的 @model 關鍵字只是一個小特性,但是在讓視圖文件便於讀寫中作出了貢獻。在以後的文章中我將介紹ASP.NET MVC 3 Beta版中的一些其他的類似改進。

希望對您有所幫助,

Scott

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章