2011-10-31 72 views

回答

30

是的,它的效果很好。只是告訴你的佈局頁面使用另一個佈局頁面

@{ Layout = "pathToMyOtherLayout"; } 

您也可以使用部分通過父級佈局。例如:

@Section Headers {@RenderSection("Headers")} 
+2

通過節的細節是我所需要的 - 謝謝。 – Liam

9

你可以連網頁就像你可以母版頁,在_ViewStart.cshtml你將看到如何佈局頁面的定義:

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

你可以只在_Layout.cshtml添加此部分引用另一個父級,或將其添加到單個視圖以引用不同的佈局視圖。

ScottGu對Razor Layouts

我用你在一些電子商務網站,你在哪裏,在結賬過程中,我不希望有任何雜念(導航等談論這個確切的方法與詳細信息後),因此我沒有在佈局中設置一些特殊案例if checkout,而是製作了一個LayoutBrandingOnly和一個「繼承」它的Layout,因此我不必重複所有品牌HTML。

1

通過使用部分,您可以在一個佈局頁面中很容易地解決這個問題。 支票http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

+1

這是可以的,當你不介意重複一堆視圖導航覆蓋空白。但是如果你有一個完整的視圖文件夾需要不同的佈局,那麼使用佈局「繼承」會更簡潔一些,這有助於你不重複自己。 –

+2

我同意在大型項目中繼承會更乾淨,但無論哪種方式,您都必須在視圖中保留某些內容,以表示它與普通視圖不同。除非使用非常具有描述性的長名稱來定義佈局,否則覆蓋導航權限可能會比實際發生的視圖中的不同情況更具信息性,除非您使用非常具有描述性的長名稱來定義佈局,因此您無需追蹤就可以一目瞭然地傳達該信息繼承鏈。 – benjamin

+0

好點,情景用法絕對是 –

相關問題