+-
如何将视图中的“RenderBody”和“RenderBody”内容作为单独的“标题”和“页脚”文件提供?

注意:我在发布此问题之前找到了解决方案,因此我将使用我的解决方案回复自己。

我有一个.NET MVC网站,它使用层次结构中设置的视图,通过Section和RenderSection将数据相互传递。我有一个名为“Master”的顶级视图,其中有几个视图继承自它。

我有两个不同的外部应用程序,我需要能够动态导入MVC网站的“外部模板”作为单独的页眉和页脚文件,对应于顶层视图“RenderBody”行上方和下方的代码,分别。

如何设置以便我可以在MVC应用程序中保留我的分层视图结构,并将这些单独的页眉和页脚代码文件提供给外部应用程序?

我已经尝试将RenderBody上方和下方的Master.cshtml代码移动到页眉和页脚部分视图中,目的是在Master.cshtml中使用这些部分视图,以及打算供外部使用的新Header.cshtml和Footer.cshtml文件应用。问题是我没有找到一种方法来使用与Master.cshtml代码混合的RenderSection行。

0
投票

这是我找到的解决方案:

在Master.cshtml中:

ViewDataDictionary globalHeaderData = new ViewDataDictionary {
    {"sectionName1", RenderSection("sectionName1", false)},
    {"sectionName2", RenderSection("sectionName2", false)},
};

ViewDataDictionary globalFooterData = new ViewDataDictionary {
    {"sectionName3", RenderSection("sectionName3", false)},
    {"sectionName4", RenderSection("sectionName4", false)},
};

@Html.Partial("GlobalHeader", Model, globalHeaderData)
@RenderBody()
@Html.Partial("GlobalFooter", Model, globalFooterData)

然后在GlobalHeader和GlobalFooter中,用以下代码替换每个RenderSection行:

@ViewData["theSectionName"]

而已!