.net - 如何将视图的“高于 RenderBody”和“低于 RenderBody”内容作为单独的“页眉”和“页脚”文件提供?
问题描述
注意:我在发布这个问题之前想出了一个解决方案,所以我会用我的解决方案来回复自己。
我有一个 .NET MVC 网站,它使用在层次结构中设置的视图,通过 Section 和 RenderSection 相互传递数据。我有一个名为“Master”的顶级视图,其中有几个继承自它的视图。
我有两个不同的外部应用程序,我需要能够将 MVC 网站的“外部模板”作为单独的页眉和页脚文件动态导入,对应于顶层视图的“RenderBody”行上方和下方的代码,分别。
如何进行设置以便在 MVC 应用程序中保留我的分层视图结构,并将这些单独的页眉和页脚代码文件提供给外部应用程序?
我尝试将 RenderBody 上方和下方的 Master.cshtml 代码移动到页眉和页脚部分视图中,目的是在 Master.cshtml 以及供外部使用的新 Header.cshtml 和 Footer.cshtml 文件中使用这些部分视图应用程序。问题是我还没有找到一种方法来使用与 Master.cshtml 代码混合的 RenderSection 行。
解决方案
这是我找到的解决方案:
在 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"]
而已!
推荐阅读
- java - 对 blob 使用对象存储
- azure - Azure AD 上的外部组织访问最佳方法
- sql - 创建一个“部分”窗口函数来更新 SQL Server 中的数据
- python - Python 正则表达式(在列表中匹配)
- azure - 我可以创建禁用 RDP 的通用 vm 映像吗
- python - Django 用户登录问题
- python-3.x - Python/Selenium - 如何处理从应用商店提取的数据
- postgresql - 使用 Postgres 进行稳定的分页
- vb.net - 后台线程减慢主 UI 线程 Visual Basic
- bash - VS Code Bash 对 Azure 的调用未经过身份验证