2015-02-24 32 views
1

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

回答

0

由於您的條件將在頁面被渲染,而不是佈局,你將不得不保留一些全局函數,可以在頁面加載後調用。 類似於

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

並在您的子頁面中調用此函數。通過window.myfunction();

此外,您可以使用Viewbag,但您需要設置每個視圖中的ViewBag的值,當它被呈現或更新。

根據我最有效的方式將保持兩個獨立的佈局,如果你只有一個部分必須隱藏。因爲無論您在每次加載頁面時選擇哪種方式,條件都會被觸發,從而導致性能下降。

+0

是的,這是我最終用多個嵌套佈局完成的。 – mohsinali1317 2015-02-24 10:20:46

2

是的,你可以這樣做多種方式,使用C#在剃刀的第一個:

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

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

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

JavaScript代碼上面會在整個頁面加載後自動執行,這要歸功於jQuery的$(function() { ... })功能。

2

你有多種選擇

  1. 用戶jQuery代碼隱藏特定頁面的頁腳股利。 使用$('#footerId')。hide();在那個特定的頁面上。

  2. 使用可以在特定的動作結果上設置一個viewbag並檢查設置了viewbag的佈局頁面,否則保持原樣。

ex。

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

如果要隱藏你的佈局例如頁腳,你可以這樣做:

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