MVC3 布局


參考文章:http://www.cnblogs.com/haogj/archive/2010/12/01/1893955.html

 

1、_layout.cshtml公共模板。使用Html.Partial(“_header”),html.Partial(“_footer”)加載頁頭頁腳,使用RenderBody加載內容。

2、
1、帶有Render的方法返回值是void,在方法內部進行輸出;不帶的返回值類型為MvcHtmlString,所以只能這樣使用:
@Html.Partial 對應 @{Html.RenderPartial(....);}
@Html.Action 對應 @{Html.RenderAction(....);}
2、Html.Partial可以直接提供用戶控件名作為參數,而Html.Action需要有對應的Action,在Action內部返回PartailResult(即retun PartialView())。
3、對於簡單的沒有任何邏輯的用戶控件,推薦使用Html.Partial;對於需要設置一些Model的用戶控件,推薦使用Html.Action。當然,有Model數據也是可以使用Html.Partial方法的,可以看方法的重載。
4、使用Html.Action有個好處,就是可以根據不同的場景選擇不同的用戶控件。
比如:
@Html.Action("UserInfoControl")
在對應的UserInfoControl這個Action中,在用戶未登錄的時候,可以retun PartialView("LogOnUserControl");登錄后,可以retun PartialView("UserInfoControl");

 

Html.Action和Html.RederAction來創建子視圖   http://www.cnblogs.com/guanjie20/archive/2011/01/18/1938362.html

在ASP.NET MVC中,創建視圖最典型的方式是調用一個action方法,它使用模型准備視圖數據。action方法然后調用控制器的視圖方法創建視圖。然而,你可能想要調用不同的動作方法創建視圖的不同部分。例如,可能你有一頁面展現了最新新聞,天氣和運動。在那種情況下,用三個動作方法是比較好的,一個動作方法處理新聞,另一個處理天氣,還有一個處理運動。那樣你可以在不同條件下呈現不同的視圖,或者是將復雜的視圖分解為小型的,更容易管理的片段。

這個主題描述了如何在創建多個視圖分段(子視圖)的一個視圖(父視圖)里調用多個動作方法。

1. 父視圖和子視圖
父視圖是包含了調用返回子視圖的動作方法的視圖。父視圖包含大部分用於呈現頁面的HTML。子視圖僅包含用於展示視圖某部分的必須的標記。

例如,一個子視圖創建一個列表,視圖可能僅僅包含列表所需要的HTML,像下面的例子:

<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>

所有其它的標記(body, head等等)會在包含在父視圖中。

2.調用Action和RenderAction輔助方法用於呈現子視圖
ASP.NET MVC提供 HTML輔助方法(擴展方法)呈現大多數的 HTML元素,例如表單和鏈接,那種簡化了例如像輸入驗證這樣的公共任務。用於呈現子視圖的兩個 HTML輔助方法分別是:Aciton和RenderAction。這兩個HTML輔助方法都在ChildActionExtensions類中。

Action方法以字符串的形式返回子視圖,可以直接被呈現。RenderAction方法在適當的地方呈現子視圖。
例如,假設你有一個名為ChildList 的子視圖,它包含了上一切顯示的HTML代碼。控制器包含了下面的動作方法,用於呈現子視圖:

public ActionResult ChildList()
{
    return View();
}

注意在控制器中,沒有特定的方法呈現父視圖或子視圖。你呈現一個父視圖,父視力再依次呈現它需要的子視圖。
為了調用動作方法在父視圖中呈現子視圖,你可以像下面的示例一樣使用Action輔助方法或RenderAction輔助方法。

// One alternative (renders a string)
<%= Html.Action("ChildList") %>

//Another alternative (renders in place)
<% Html.RenderAction("ChildList"); %>

注意因為Html.Action輔助方法返回字符串,必須要等號"="。

3.為輔助方法傳遞參數
你可以在父視圖的不同位置調用相同的動作方法,通過參數傳遞決定要呈現什么。Action和 RenderAction兩個方法都有方法重載接受一個包含了一對參數名和值的對象。下面的代碼示例了RenderAction方法調用展示動作方法。在這種情況下,它傳遞一個包含在這部分呈現的子視圖的名稱值的匿名對象。標記呈現了一個“新聞”片段,接着是一個“天氣”片段。

<% Html.RenderAction("Display", new { section = "News" }); %>
<% Html.RenderAction("Display", new { section = "Weather" }); %>

呈現動作方法看起來可能像下面的例子:

public ActionResult Display(string section)
{
    return View(section);
}

4.從其它控制器或區域調用動作方法
你可以調用不是當前控制器中的動作方法。要實現這樣,你調用RenderAction的一個重載方法,指定動作方法和控制器的名稱。下面的示例展示了調用SectionController類中的動作方法。第一個參數(字符串)是動作方法的名稱,第二個參數(也是字符串)是控制器的名稱。

<% Html.RenderAction("Display", "Section"); %>

如果你需要的動作方法在其它的區域中,你可以在對象中傳遞區域名稱,如下:

<% Html.RenderAction("Display", new { area = "Navigation" }); %>

通過使用RenderAction不同的重載方法,你就可以在不同的區域調用不同的控制器。

原文地址:http://msdn.microsoft.com/en-us/library/ee839451(v=VS.100).aspx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM