在我的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文件中,我在这里要做的是隐藏某个页面上的页脚。甚至可以隐藏特定页面上的页脚?
期待提出建议。
答案 0 :(得分:3)
是的,你可以用几种方法,第一种在Razor中使用C#:
@if (myCondition)
{
@RenderPage(...);
}
或者你可以使用jQuery做JavaScript:
<script>
$(function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
});
</script>
由于$(function() { ... })
jQuery功能,一旦整个页面加载,上面的JavaScript代码将自动执行。
答案 1 :(得分:3)
您有多个选项
用户jquery代码,用于隐藏该特定页面上的页脚div。 使用$(&#39;#footerId&#39;)。hide();在那个特定的页面上。
使用可以在特定的actionresult上设置一个viewbag,并检查viewbag设置的布局页面是否隐藏,否则保持不变。
离。
@if(Viewbag.ShowFooter!="False")
{
@RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")
}
答案 2 :(得分:3)
如果要隐藏例如布局中的页脚,可以这样做:
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 {}
答案 3 :(得分:3)
向要隐藏页脚的page.cshtml
添加CSS。
footer {
visibility: collapse;
}
答案 4 :(得分:1)
由于您的条件将出现在正在呈现的页面中而不是布局中,您将需要保留一些可在页面加载后调用的全局函数。 像
这样的东西window.myfunction =function() {
if (myConditionInJavaScript) {
$("#myfooter").hide();
}
}
并在您的子页面中调用此函数。按window.myfunction();
此外,您可以使用Viewbag,但需要在呈现或更新每个视图时设置ViewBag的值。
如果您只有一个必须隐藏的部分,那么根据我的最有效方式是保持两个单独的布局。因为无论您在每个页面加载时选择哪种方式,都会触发条件,这可能会导致性能下降。