1. 程式人生 > >ASP.NET MVC 3的分部檢視

ASP.NET MVC 3的分部檢視

1、什麼是分部檢視,我們應該什麼時候應該用?

作為一個對ASP.NET MVC 模型很熟悉的開發者,他們自然想建立一個內容和程式碼都可以重用的元件,在web 窗體,我們可以建立一個web使用者控制元件或web伺服器控制元件。但是在MVC,我們應該用分部檢視,在這個概念的角度看,對任何情景的應用情景都應該有用。 在應用程式中,每一頁上都顯示這個股票行情 在應用程式中,一個日曆控制元件顯示在多個頁面中 一個登入框 用於在多個頁面上的社交網路元件,如Facebook的Like按鈕。 雖然ASP.NET MVC 的分部檢視,在語法和功能這兩個不同的角度,理論上可以理解為使用者控制元件。WEB使用者控制元件在WEB窗體中使用ViewState、PostBacks, and Events 。而在MVC的分部檢視,不使用任何上述技術管理狀態。
正如ASP.NET Web使用者控制元件做的,分部檢視,可以挖掘到你的應用程式以及其他應用程式元件之間的資料共享中的模型。 2、分部檢視的渲染 在ASP.NET MVC3的分部檢視周昂,允許開發人員用精確和簡潔的建立可重複使用的內容模組。呈現分部檢視的語法被作為一個HTML輔助實現。  Html.Partial輔助呈現分部檢視名為“_FeaturedProduct”內聯。所有過載方法的第一個引數為@Html.Partial 你期望的檢視名稱或者分部檢視的名字,沒有副檔名。 例如,一個@Html.Partial輔助假定檢視放在 \Views\Shared\ 的資料夾下。其他的 @Html.Partial方法過載允許你在各個檢視之間傳遞ViewData或者 ViewBag物件. 下面的程式碼演示呼叫呈現分部檢視的特點。
<div>
  @Html.Partial(
"_FeaturedProduct") </div>
分部檢視可以在Layout Page佈局頁面呈現。 也有一些情況下,你可能要另外一種方式實現,比如直接寫入HTTP響應流,而不是區域性檢視渲染結果。
<div> 
@Html.RenderPartial("_FeaturedProduct") 
</div>

使用Html.RenderPartial流影象或其他元素,媒體中心或更快的下載時間是非常重要的。

3、建立一個區域性檢視

不管是主檢視還是分部檢視都是.cshtml 的檔案,其中分部檢視的不同之處是在於檔案放在:\Views\Shared\ 檔案下。通過

在解決方案資源管理器上下文選單中使用“新增新檢視”對話方塊來訪問\Views\Shared 檔案節點。新增新的檢視模板“對話方塊提供了用於建立您的部分檢視,特別注意,包括選項的選擇。不要忘記檢查“作為一個區域性檢視”建立或你會結束大量的程式碼刪除。

一旦你建立的檢視,你可以開始通過簡單的編輯檔案定製。刪除或修改檢視的程式碼捆綁在一起。下面所示的程式碼(_FeaturedProduct.cshtml)是預設檢視模板建立相同的程式碼,我們可以修改,以顯示不同的特色產品:

複製程式碼
<style type="text/css"> 
.featuredProduct {border: solid 1px #000} 
</style> 
<div> 
<div> 
<h2> 
Our Featured product:<br /> 
@ViewBag.FeaturedProduct.Name 
</h2> 
</div> <div> 
<h3> 
Now discounted to [email protected]("{0:F}", ((decimal)ViewBag.FeaturedProduct.Price)-100) 
</h3> 
</div> 
<div> 
@Html.ActionLink("Featured Product Details", "Details", new { id = ViewBag.FeaturedProduct.ProductId }) 
</div> 
<div> 
<img class="featuredProduct" src="@Href("~/Content/Images")/@ViewBag.FeaturedProduct.ImageName" alt="Featured Product"/> 
</div> 
</div>
複製程式碼

和強型別一樣,強型別分部檢視也支援點標記語法和訪問模型,ViewBag,ViewData的其他類,並專門設計資料共享。

我們閱讀上面的程式碼,我們應該很明確,分部檢視和常規檢視的語法沒有區別。

重要的是沒有相關語法關於如何使用分部檢視。然而,考慮分部檢視和常規檢視之間的一致性,特別是當我們需要在它們之間共享資料。

4、主檢視與分部檢視的資料共享

應用程式元件之間的資料傳遞,這是一個普遍的現象,MVC,檢視和控制器這些元件也一樣。 如前所述,你可以使用ViewBag或ViewData的類進行資料的共享。首先,介紹ViewBag的ViewData幾個關鍵字:

ViewData的是以前釋出的版本的;,ViewBag與MVC3一起釋出的。

ViewData的可以包含任何型別的資料在一個鍵—值對格式。即,ViewData["Message"] = "Welcome";

ViewBag物件的ViewData物件的包裝,並允許開發人員編寫他們使用強型別的語法。

ViewBag物件可以通過簡單地設定在一個更流暢的語法屬性擴充套件。即· ViewBag.Customer = new Customer(1,"Smith");

如果在一個控制器的程式碼使用ViewBag,或ViewData的類,這些類將可檢視的整個生命週期,而且包括其分部檢視。

可取的物件是的ViewBag。由於其更加流暢和動感的語法,還有複雜的物件可以很容易地在元件之間共享。下面的示例演示設定在控制器的ViewBag物件,它會提供所有必要的元件:

複製程式碼
ProductModel productModel = new ProductModel();        
public ActionResult Index()
{
    ViewBag.FeaturedProduct = new FeaturedProduct(105, "The Most Awesome Bike Ever!", 1000.00M, "bike4.png");           
    return View(productModel.Products);            
}
複製程式碼

訪問視圖裡面的ViewBag或部分使用語法如下:

@ViewBag.FeaturedProduct.Name

5、總結

部分檢視重用HTML和Razor 語法,具有很好的資料共享。

6、資料來源

相關推薦

ASP.NET MVC 3分部檢視

1、什麼是分部檢視,我們應該什麼時候應該用? 作為一個對ASP.NET MVC 模型很熟悉的開發者,他們自然想建立一個內容和程式碼都可以重用的元件,在web 窗體,我們可以建立一個web使用者控制元件或web伺服器控制元件。但是在MVC,我們應該用分部檢視,在這個概念的角度

ASP.NET MVC 3.0 Razor檢視如何展示多實體

 Razor檢視模型支援@model來初始化頁面物件型別,比如: 1     @model FlashTravel.Models.Traveller> 也可以是一個支援迭代的公開列舉器: 1   

asp.net mvc 3.0詳細筆記__10__建立強型別檢視

歡迎一起來學習MVC 3.0,我們在一步一個腳印的做一個MVC 3.0的專案,期間會有很多值得探索的地方。將會學到Razor,Lampda,Entity Framework,LinqC#新特性等等知

ASP.NET MVC 3 CheckBoxList 的使用

ted nat bag builder 字符 checked lec sce list 在以前的 ASP.NET MVC 中可以直接使用 CheckBoxList,但後來不知道什麽原因在 MVC 中移除了 CheckBoxList,所以默認情況下 ASP.NET MVC 3

asp.net mvc 3.0詳細筆記__17__使用 DataAnnotations 進行模型驗證

         歡迎一起來學習MVC 3.0,我們在一步一個腳印的做一個MVC 3.0的專案,期間會有很多值得探索的地方。將會學到Razor,Lampda,Entity Framework,Linq

asp.net mvc 3.0詳細筆記__18__EF的下載

EntityFramework 當前最新版本是EntityFramework 6.1.3 EntityFramework位於System.Data.Entry名稱空間如何在vs2010上安裝EntityFramework? 首先,需要安裝一個vs外掛,名稱為NuGet Package Manager,微軟官

ASP.NET MVC 3.0 到 4.0 新特性

Razor檢視引擎;NuGet包管理工具;改善的可擴充套件性;全域性活動篩選器(Global Action Filter); 動態語言支援;區域性頁面輸出快取;改進的ajax;改善的驗證機制;移動專案開發模板;Web API; 來自:http://blog.csdn.ne

ASP.NET MVC 3: Razor的@:和語法

代碼塊 新的 涵蓋 解析 for -o mailto ive arch 這是我正在寫的博文系列中的另一篇,涵蓋ASP.NET MVC 3的一些新功能: http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc

ASP.NET MVC 控制器向檢視傳遞模型資料(可以是多個)

利用ViewBag來傳遞資料檢視部分程式碼:           @model Login001.Models.YSY_Ware            商品            @foreach (var n in ViewBag.ware)            {   

基於ASP.NET MVC 3的企業應用專案總結

為期三個月的開發加測試工作終於告一段落了,這是我們團隊第一次採用ASP.NET MVC(直接使用最新的MVC 3)開發企業應用,期間碰到了很多問題,但在大家的努力下,也都一一解決,先簡單介紹一下專案情況吧,是公司的一套業務運營系統,總的從技術實現難度來講,沒有什麼特殊的地方

Asp.Net Mvc 控制器與檢視的資料傳遞

 資料傳遞也就是控制器和檢視之間的互動,比如在檢視中提交的資料,在控制器怎麼獲取,或者控制器從業務層獲得一些資料,怎麼傳遞到檢視中,讓檢視顯示在客戶端呢?帶著這些疑問,我們接著看。。          下面分別講解asp.net mvc框架中有三種資料傳遞方式,分別是:V

CentOS7+Mono5.2.0.224 +Jexus5.8.3.0 布署 Asp.Net MVC (vs2017)

etc .sh 運行 沒有 lin dot 服務 image 作者 背景:   比起大神我們只是差遠了,只知道一味的找找看,找的資料不少,但真不知道哪一個是正確的。   之前一個文章也寫了怎麽安裝 Jexus 但始終只有是html的靜態頁面可以asp.net 都不行(ht

如何應用ASP.NET MVC中的分部視圖

如何 重復 shtml 技術 選擇 partial viewbag body html 概述:   在ASP.NET Web Form的開發經驗中,對於User Control使用比較頻繁,可以減少重復的代碼,利於頁面模塊化,這個概念也被引入了ASP.NET M

ASP.NET MVC 學習筆記-3.Razor語法

OS 及其 wid resources 日期 ext str oca 區分   Razor語法是一種嵌入在網頁中基於服務器的代碼的編程語法。使用Razor語法的網頁中包括兩個不同類型的內容:客戶端內容和服務器內容。客戶端內容是網頁中常用的內容,比如,HTML標記(元素)、C

3.4 自動測試初步《精通ASP.NET MVC 5》

概述   ASP.NET MVC 框架已被設計成易於建立自動測試,並易於採用諸如測試驅動開發(TDD)等的開發方法學。ASP.NET MVC 為自動化測試提供了一個理想平臺。   從廣義上講,當今的 Web 應用程式開發者注重於兩種自動化測試:     第一種是單元測試,這是以與應用程式其他部分相隔離的

適合ASP.NET MVC檢視片斷快取方式(上):起步

說到網站效能優化,沒有什麼比“快取”更重要了。即便是某些朋友口中念念不忘的“靜態頁”,說到底也只是快取了整張頁面內容而已。但是,顯然這樣大粒度的快取策略,在如今“牽一髮而動全身”的Web 2.0站點中幾乎是無法使用的。試想,在Twitter中的某個名人被數十萬人訂閱,那麼他發一條訊息,難道此時網站要去修改數十

適合ASP.NET MVC檢視片斷快取方式(下):頁面輸出原則

上一篇文章裡已經把Html.Cache打造成了非常具有可用性的API,需要快取時我們只需在頁面上做一個標記即可:<% Html.Cache("cache_key", DateTime.Now.AddSeconds(10), () => { %> <% foreach (

ASP.NET MVC 入門3、Routing

publicstaticvoid RegisterRoutes(RouteCollection routes) {     //忽略對.axd檔案的Route,也就是和WebForm一樣直接去訪問.axd檔案    routes.IgnoreRoute("{resource}.axd/{*pathInfo

適合ASP.NET MVC檢視片斷快取方式(中):更實用的API

上一篇文章中我們提出了了片斷快取的基本方式,也就是構建HtmlHelper的擴充套件方法Cache,接受一個用於生成字串的委託物件。在快取命中時,則直接返回快取中的字串片斷,否則則使用委託生成的內容。因此,快取命中時委託的開銷便節省了下來。不過這個方法並不實用,如果您要快取大片的HTML,還需要準備一個Par

ASP.NET MVC 學習: 檢視

用檢視呈現UI 檢視可以不包含任何應用邏輯或者資料庫檢索程式碼,所有的應用邏輯都可以在controller中進行處理。 檢視通過使用controller類在呼叫RenderView方法的時候提供檢視相關資料物件呈現UI: publicvoid Categories() {     List<C