隐藏在一些观点剃刀

问题描述:

在我的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

你可以用一个页脚DIV中,使该分区使用jQuery隐藏在某些页面。 – 2015-02-24 09:39:28

由于您的条件将在页面被渲染,而不是布局,你将不得不保留一些全局函数,可以在页面加载后调用。 类似于

window.myfunction =function() { 
    if (myConditionInJavaScript) { 
     $("#myfooter").hide(); 
    } 
} 

并在您的子页面中调用此函数。通过window.myfunction();

此外,您可以使用Viewbag,但您需要设置每个视图中的ViewBag的值,当它被呈现或更新。

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

+0

是的,这是我最终用多个嵌套布局完成的。 – mohsinali1317 2015-02-24 10:20:46

是的,你可以这样做多种方式,使用C#在剃刀的第一个:

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

,或者您可以JavaScript的使用jQuery做:

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

JavaScript代码上面会在整个页面加载后自动执行,这要归功于jQuery的$(function() { ... })功能。

你有多种选择

  1. 用户jQuery代码隐藏特定页面的页脚股利。 使用$('#footerId')。hide();在那个特定的页面上。

  2. 使用可以在特定的动作结果上设置一个viewbag并检查设置了viewbag的布局页面,否则保持原样。

ex。

@if(Viewbag.ShowFooter!="False")  
{  
    @RenderPage("~/Views/Shared/DisplayTemplates/_footer.cshtml")  
} 

如果要隐藏你的布局例如页脚,你可以这样做:

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 {}