2011-05-16 121 views
16

我一直在閱讀有關佈局,區,視圖和局部的觀點,但我真的不知道如何處理的佈局像這樣的例子:如何使用MVC3 Razor佈局頁面?

enter image description here

  • 頂欄:將就像Facebook上的頂級酒吧 一樣。我將包含 認證信息和 一般選項和菜單。

  • 導航條:將包含 關於你在哪裏, 你可以去哪裏。還有一個「搜索」框 。

  • 正文:實際需要的信息。

  • 側欄:將包含相關信息 有關 正文中的內容。

  • 頁腳:版權,許可證和東西 這樣的。

身體將是一個「查看」,邊欄將是一個「節」,頁腳將在「佈局」靜態HTML,但...這將是酒吧和導航

頂欄沒有與任何有關,所以我把它作爲「佈局」一「部分視聽」,但我不能這樣做,因爲它是<body>裏面無論如何,所以當我打電話@RenderBody(),它應該呈現。與導航相同,它與主體有某種關係,但我想將其作爲外部控件獨立運行,並根據URL中的信息顯示信息。

我該如何解決這個問題?

UPDATE,請閱讀:問題不是關於CSS和HTML,它不是關於如何佈局這一點,但如何使用剃刀工具來做到這一點,它是關於剃刀RenderBodyPartialView

當我從我的控制器返回結果時,我想只返回圖片中標記爲「body」和「side bar」的部分,我想避免重複頂部條形碼。有沒有辦法創建一個「ChildView」,繼承自「ParentView」,這從「佈局」,這種方式,當我返回「視圖(」ChildView「)屏幕自動生成?

回答

10

檢查出MVC3 Music Store Tutorial

該教程的最後一部分介紹瞭如何設計佈局,包括使用Html.RenderAction()方法的局部視圖。另請參見Html.RenderSection()方法。

+1

好吧,我現在看清楚了,謝謝你的例子。 @RenderBody不僅用於呈現標記,它還呈現主子視圖,因此我可以在html中對主體進行編碼,將PartialViews放在任何需要的位置,然後使用RenderBody渲染示例中的白色填充區域。 – vtortola 2011-05-16 16:40:15

10

有一個偉大的職位關於使用剃刀布局:ASP.NET MVC 3: Layouts with Razor

基本上你的結構將是:
1)_ViewStart.cshtml(這將指向佈局和其他所有你認爲會共享的東西);
2).cshtml,這將是你的佈局,即:_Layout.cshtml(類似於Site.Master網頁)。

裏面_Layout.cshtml你把你的HTML佈局,像這樣的例子:

<body> 
    <div id="maincontainer"> 
     <div id="topsection"> 
      <div class="topbar"> 
       <h1>Header</h1> 
       <div id="logindisplay"> 
        @Html.Partial("_LogOnPartial") 
       </div>     
      </div>    
      <div class="nav"> 
       <ul><li>Home</li></ul> 
      </div>    
     </div> 

     <div id="contentwrapper"> 
      <div id="contentcolumn"> 
       <div class="body">      
        @RenderBody() 
       </div> 
      </div> 
     </div> 

     <div id="sidebar"> 
      <b>Side bar</b> 
     </div> 

     <div id="footer">Footer</div> 

    </div> 
</body> 

見,我把@RenderBody()股利「#body」裏面,所以當我的控制器回報一個ActionResult,只有這個div會被更新結果。