2014-11-08 81 views
2

正如我所看到的主佈局和局部視圖具有相同的功能。例如我有一個主佈局頁面,其中有<html> <head> <body>元素。所有的頁面都從它繼承,然後我有10頁,例如他們都有相同的導航欄,我應該做什麼,我應該創建母版頁,從第一母版頁繼承,所有這10頁繼承自第二母版頁,或者我應該創建部分視圖並在全部10頁中呈現。何時使用主佈局和局部視圖MVC c#?

+0

嘗試閱讀本http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts – 2014-11-08 08:20:46

回答

0

他們有不同的預期用途。

主視圖可以看作是主模板或佈局,其中某個區域或模塊中的所有頁面都將使用該模板作爲基本佈局。他們經常有RenderSection和RenderBody助手標籤。

部分視圖是指當您經常使用標籤和標記的片段時,因此您將它們歸入部分視圖以重用它們。

一個典型的網站可能有一個或兩個母版頁(可能是一個面向公衆的頁面,未經過身份驗證,第二個頁面是內部的已驗證頁面)。主頁面將包含標題,正文,頁腳等部分。你經常在他們身上貼上品牌標籤,還有導航欄,甚至是新聞欄目,博客文章,或者其他你通常在周圍內容中看到的東西。

根據你的描述,聽起來你可能想要兩個不同的母版頁,每個母版頁都有一組相似的視圖。

部分視圖通常會像數據網格,頁腳或圖表或任何可重用的東西。

0

「主」是Web窗體的術語。避免在MVC環境中使用它。在MVC中,你有佈局,視圖和局部視圖。實際上,這些都只是「意見」。佈局的關鍵區別僅僅在於它將用作佈局,而視圖使用佈局。局部視圖實際上只是一個不使用佈局的視圖。

就繼承而言,由於佈局只是一個視圖,因此它既可以是佈局,也可以是使用佈局。這是你的延伸點。例如:

_Layout.cshtml

<html> 
    <head> 
    </head> 
    <body> 
     @RenderBody() 
    </body> 
</html> 

_SubLayout.cshtml

@{ Layout = "~/Views/Shared/_Layout.cshtml"; } 

<div class="content"> 
    @RenderBody() 
</div> 

SomeView.cshtml

@{ Layout = "~/Views/Shared/_SubLayout.cshtml"; } 

<p>Foo</p> 

用於SomeView.cshtml一次渲染生成的HTML是:

<html> 
    <head> 
    </head> 
    <body> 
     <div class="content"> 
      <p>Foo</p> 
     </div> 
    </body> 
</html>