带级联截面的Razor嵌套布局
我有一个使用Razor作为其视图引擎的MVC3网站。我希望我的网站可以换肤。大多数可能的外观非常相似,以至于它们可以从共享的主版面派生。 因此,我正在考虑以下设计: 但是,我希望能够RenderSection在最底层调用_Common.cshtml,并使其呈现在最顶层定义的部分Detail.cshtml。这是行不通的:RenderSection显然只渲染下一层定义的部分。 当然,我可以定义每个皮肤中的每个部分。例如,如果_Common需要调用RenderSection("hd")中定义的部分Detail,我只需将其放在每个部分中即可使用_Skin: @section hd { @RenderSection("hd") } 这会导致代码重复(因为每个皮肤现在必须具有相同的部分),并且通常感到混乱。我还是Razor的新手,似乎我可能缺少明显的东西。 调试时,我可以在WebViewPage.SectionWritersStack中看到已定义部分的完整列表。如果我可以告诉RenderSection在放弃之前浏览整个列表,它将找到我需要的部分。Section,SectionWritersStack是非公开的。 另外,如果我可以访问布局页面的层次结构并尝试在每个不同的上下文中执行RenderSection,则可以找到所需的部分。我可能缺少了一些东西,但是我看不到任何办法。 除了我已经概述的方法之外,还有其他方法可以实现此目标吗?