ASP.NET MVC 3的分部檢視
1、什麼是分部檢視,我們應該什麼時候應該用?
作為一個對ASP.NET MVC 模型很熟悉的開發者,他們自然想建立一個內容和程式碼都可以重用的元件,在web 窗體,我們可以建立一個web使用者控制元件或web伺服器控制元件。但是在MVC,我們應該用分部檢視,在這個概念的角度看,對任何情景的應用情景都應該有用。 在應用程式中,每一頁上都顯示這個股票行情 在應用程式中,一個日曆控制元件顯示在多個頁面中 一個登入框 用於在多個頁面上的社交網路元件,如Facebook的Like按鈕。 雖然ASP.NET MVC 的分部檢視,在語法和功能這兩個不同的角度,理論上可以理解為使用者控制元件。WEB使用者控制元件在WEB窗體中使用ViewState、PostBacks, and Events 。而在MVC的分部檢視,不使用任何上述技術管理狀態。<div> @Html.Partial(分部檢視可以在Layout Page佈局頁面呈現。 也有一些情況下,你可能要另外一種方式實現,比如直接寫入HTTP響應流,而不是區域性檢視渲染結果。"_FeaturedProduct") </div>
<div> @Html.RenderPartial("_FeaturedProduct") </div>
使用Html.RenderPartial流影象或其他元素,媒體中心或更快的下載時間是非常重要的。
3、建立一個區域性檢視
不管是主檢視還是分部檢視都是.cshtml 的檔案,其中分部檢視的不同之處是在於檔案放在:\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