在某些 Razor 视图中隐藏渲染页面
Hide Render page in some views Razor
在我的 mvc 应用程序中,我制作了一个页脚并像这样嵌入它
<div class="off-canvas-wrap" data-offcanvas>
<div class="inner-wrap">
@Html.Action("Menu", "Site")
<aside class="main-section">
@RenderBody()
</aside>
@RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")
</div>
</div>
此代码位于我的 _layout.cshtml 文件中,我在这里要做的是隐藏特定页面上的页脚。甚至可以隐藏特定页面上的页脚吗?
期待您的建议。
是的,您可以通过多种方式做到这一点,第一种是在 Razor 中使用 C#:
@if (myCondition)
{
@RenderPage(...);
}
或者你可以让 JavaScript 和 jQuery 一起做:
<script>
$(function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
});
</script>
上面的 JavaScript 代码将在整个页面加载后自动执行,这要感谢 $(function() { ... })
jQuery 功能。
您有多种选择
用户 jquery 代码隐藏特定页面上的页脚 div。
使用 $('#footerId').hide();在该特定页面上。
使用可以在特定的 actionresult 上设置一个 viewbag 并检查设置了 viewbag 的布局页面而不是隐藏,否则保持原样。
例如
@if(Viewbag.ShowFooter!="False")
{
@RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")
}
由于您的条件将出现在正在呈现的页面中而不是布局中,您将不得不保留一些可以在页面加载后调用的全局函数。
像
window.myfunction =function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
}
并在您的子页面中调用此函数。通过 window.myfunction();
您也可以使用Viewbag,但需要在渲染或更新时在每个视图中设置ViewBag 的值。
如果您只有一个部分需要隐藏,我认为最有效的方法是保持两个独立的布局。因为无论您在每次页面加载时选择哪种方式,都会触发条件,这可能会导致性能下降。
如果您想从布局中隐藏页脚,您可以这样做:
In _layout:
@if (IsSectionDefined("hidefooter"))
{
@RenderSection("hidefooter", false)
}
else // Just regular footer from layout
{
<footer class="footer top30">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<p>Copyright © ABC</p>
</div>
</div>
</div>
</footer>
}
In chtml file:
@section hidefooter {}
将 css 添加到要隐藏页脚的 page.cshtml
。
footer {
visibility: collapse;
}
在我的 mvc 应用程序中,我制作了一个页脚并像这样嵌入它
<div class="off-canvas-wrap" data-offcanvas>
<div class="inner-wrap">
@Html.Action("Menu", "Site")
<aside class="main-section">
@RenderBody()
</aside>
@RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")
</div>
</div>
此代码位于我的 _layout.cshtml 文件中,我在这里要做的是隐藏特定页面上的页脚。甚至可以隐藏特定页面上的页脚吗?
期待您的建议。
是的,您可以通过多种方式做到这一点,第一种是在 Razor 中使用 C#:
@if (myCondition)
{
@RenderPage(...);
}
或者你可以让 JavaScript 和 jQuery 一起做:
<script>
$(function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
});
</script>
上面的 JavaScript 代码将在整个页面加载后自动执行,这要感谢 $(function() { ... })
jQuery 功能。
您有多种选择
用户 jquery 代码隐藏特定页面上的页脚 div。 使用 $('#footerId').hide();在该特定页面上。
使用可以在特定的 actionresult 上设置一个 viewbag 并检查设置了 viewbag 的布局页面而不是隐藏,否则保持原样。
例如
@if(Viewbag.ShowFooter!="False")
{
@RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")
}
由于您的条件将出现在正在呈现的页面中而不是布局中,您将不得不保留一些可以在页面加载后调用的全局函数。 像
window.myfunction =function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
}
并在您的子页面中调用此函数。通过 window.myfunction();
您也可以使用Viewbag,但需要在渲染或更新时在每个视图中设置ViewBag 的值。
如果您只有一个部分需要隐藏,我认为最有效的方法是保持两个独立的布局。因为无论您在每次页面加载时选择哪种方式,都会触发条件,这可能会导致性能下降。
如果您想从布局中隐藏页脚,您可以这样做:
In _layout:
@if (IsSectionDefined("hidefooter"))
{
@RenderSection("hidefooter", false)
}
else // Just regular footer from layout
{
<footer class="footer top30">
<div class="container">
<div class="row">
<div class="col-lg-12 text-center">
<p>Copyright © ABC</p>
</div>
</div>
</div>
</footer>
}
In chtml file:
@section hidefooter {}
将 css 添加到要隐藏页脚的 page.cshtml
。
footer {
visibility: collapse;
}