2016-07-06 49 views
1

如何編寫控制器代碼共享頁面佈局,如何在ASP MVC數據綁定到頁面佈局4

我想從數據庫佈局得到菜單,

時能夠得到菜單在普通視圖頁面,

這是我的佈局頁

<pre lang="html"> <div style="width:1230px"> 
        <script type="text/ng-template" id="treeMenu"> 
         <a href="{{menu.Description}}">{{menu.Name}}</a> 

         <ul ng-if="(SiteMenu | filter:{ParentID : menu.Id}).length > 0"> 

          <li ng-repeat="menu in SiteMenu | filter:{ParentID : menu.Id} : true" ng-include="'treeMenu'"></li> 
         </ul> 
        </script> 
        <ul class="main-navigation"> 
         <li ng-repeat="menu in SiteMenu | filter:{ParentID : 0} : true" ng-include="'treeMenu'"></li> 
        </ul> 

回答

1

你伊索拉應該TE這部分並使用中的RenderAction佈局頁

步驟概括地說:

  1. 在某些控制器創建行動「讓說CommonController」之稱SiteMenu例如。
  2. 將代碼從數據庫中提取數據並將其映射到合適的ViewModel以表示您的菜單項。
  3. Action應該返回PartialView而不是View。
  4. 無論您的主佈局如何,都要考慮此操作。因此,只需爲它創建一個特殊的視圖,並在該視圖中放置Html的邏輯。
  5. 在主佈局合適的地方只使用@Html.RenderAction("SiteMenu ","Common")

的更多信息,請閱讀有關RenderPartial vs RenderAction vs Partial vs Action in MVC

+0

如何做到這一點的先生,是新來的MVC –

+0

更新我的回答兄弟 –

+0

我得到錯誤的先生:類型概念端的'TestDemoModel.SiteMenu'不能映射到在對象端輸入'AccountsLayout.SiteMenu'。這兩種類型都必須是抽象的,或者兩者都必須是具體類型。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 –