2011-10-14 56 views
6

我有一個局部視圖,其中包含一個每週更換一次benner的div。 此橫幅嵌入在10個具有相同佈局的頁面中。mvc3在另一個嵌入局部視圖

給像Index.cshtml或AboutUs.cshtml,頁面均爲局部視圖,並且具有laypout _Layout.cshtml我的問題是:

我可以在Index.cshtml或AboutUs.cshtml呈現橫幅inser代碼.cshtml?

類似:

內Index.cshtml或AboutUs.cshtml我有@ Html.Renderbanner( 「banner.cshtml」);

回答

6

是,

@{ Html.RenderPartial("_Banner"); } 

在您的共享視圖文件夾,添加您的局部視圖,並調用它_Banner.cshtml

0

當然,你總是可以:

@Html.Partial("Banner") 

從任何視圖或局部視圖。這將在你稱之爲助手的地方呈現Banner.cshtml部分。

1

使用@ Html.RenderPartial(「YourViewName」);

0

首先,只是爲了闡明:索引和關於您的場景中的真實部分視圖?這可能 改變我的意見,但通常我看到三個選項:

  1. 剃刀助手,在App_Code文件創建Banner.cshtml用下面的代碼:

    @helper Show(){ 
        <img src="mybanner.png"/> 
    } 
    

    然後調用Index.cshtml :

    @Banner.Show() 
    
  2. HTML輔助擴展 ,有點矯枉過正這裏可能(參見網頁教程)

  3. 管窺:創建 「_MyBanner.cshtml」 並使用Index.cshtml如下:

    @Html.Partial("_MyBanner"); 
    

(數3如果Index和AboutUs也是部分視圖可能會比較棘手,但是我會選擇其中一個。)

注意:Html.Partial和Html.RenderPartial之間存在差異。後者直接寫入輸出流,並要求您在括號中調用它。在MVC AFAIK中,最好使用Html.Partial。

0

如果你需要看到secction約您可以創建layout.cshtml

@if (IsSectionDefined("Sidebar")) 
    { 
     <div id="page"> 
      <!-- end #content --> 
      <div id="content"> 
       @RenderBody() 
      </div> 
      <div id="sidebar"> 
       @RenderSection("Sidebar", required: false) 
      </div> 
      <div style="clear: both;"> 
       &nbsp;</div> 
     </div> 
     <!-- end #page --> 
     <!-- end #sidebar --> 

    } 
    else 
    { 
     <div id="page"> 
      <!-- end #content --> 
      <div id="content2"> 
       @RenderBody() 
      </div> 
      <div style="clear: both;"> 
       &nbsp;</div> 
     </div> 
     <!-- end #page --> 
     <!-- end #sidebar --> 

    } 

一個RenderSection。CSHTML

使用

@section Sidebar{ 
    @Html.Partial("_yourbanner") 
} 

如果你不需要的旗幟不包括它