在某些视图中隐藏渲染页面Razor

时间:2015-02-24 09:38:07

标签: asp.net-mvc asp.net-mvc-4 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文件中,我在这里要做的是隐藏某个页面上的页脚。甚至可以隐藏特定页面上的页脚?

期待提出建议。

5 个答案:

答案 0 :(得分:3)

是的,你可以用几种方法,第一种在Razor中使用C#:

@if (myCondition)
{
    @RenderPage(...);
}

或者你可以使用jQuery做JavaScript:

<script>
$(function() {
    if (myConditionInJavaScript) {
        $("#myfooter").hide();
    }
});
</script>

由于$(function() { ... }) jQuery功能,一旦整个页面加载,上面的JavaScript代码将自动执行。

答案 1 :(得分:3)

您有多个选项

  1. 用户jquery代码,用于隐藏该特定页面上的页脚div。 使用$(&#39;#footerId&#39;)。hide();在那个特定的页面上。

  2. 使用可以在特定的actionresult上设置一个viewbag,并检查viewbag设置的布局页面是否隐藏,否则保持不变。

  3. 离。

     @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 &copy; 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的值。

如果您只有一个必须隐藏的部分,那么根据我的最有效方式是保持两个单独的布局。因为无论您在每个页面加载时选择哪种方式,都会触发条件,这可能会导致性能下降。