1、什么是分部視圖,我們應該什么時候應該用?
<div> @Html.Partial("_FeaturedProduct") </div>
<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 $@String.Format("{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、資料來源
Introducing MVC Development w/the Razor View Engine