2010-01-14 45 views
3

我想讓自己熟悉MVC環境。我想在我的默認母版頁上添加一個側面菜單。然而,我需要添加一個繼承來獲取我的數據。我可以這樣做,或者我必須保留'Inherits =「System.Web.Mvc.ViewMasterPage」'?我可以在我的Site.Master頁面MVC上繼承一些東西嗎?

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<body> 

<div class="page"> 
    <div id="header"> 
     <div id="title"> 
      <h1>My MVC Application</h1> 
     </div> 

     <div id="logindisplay"> 
      <% Html.RenderPartial("LogOnUserControl"); %> 
     </div> 

     <div id="menucontainer"> 

      <ul id="menu">    
       <li><%= Html.ActionLink("Home", "Index", "Home")%></li>      
       <li><%= Html.ActionLink("Summary", "Summary", "Home")%></li>      
      </ul> 

     </div> 
    </div> 

    <div id="main"> 
     <asp:ContentPlaceHolder ID="MainContent" runat="server"> 
     <div id="categories"> 
      <fieldset> 

       <% Html.RenderPartial("SideMenu", new ViewPage<DataLibrary.MenuOptions>().Model); %> 
<!--I want to use ("SideMenu", Model) above --> 
      </fieldset> 
     </div>    
     </asp:ContentPlaceHolder> 
     <div id="footer"> 
     </div> 
    </div> 
</div> 

+0

你究竟在做什麼?您擁有的代碼似乎沒有多大意義:如果您實例化一個新的ViewPage,它的模型將總是*爲空,因爲沒有人放置任何東西。你是否試圖將當前視圖的模型傳遞給局部視圖?或者是其他東西? – Eilon 2010-01-17 05:52:38

回答

2

你並不需要繼承,我相信你只需要使用一個import指令

這樣
<%@ Import Namespace="DataLibrary" %> 

另外,我覺得行

<% Html.RenderPartial("SideMenu", 
         new ViewPage<DataLibrary.MenuOptions>().Model); %> 

<% Html.RenderPartial("SideMenu", new MenuOptions()); %> 

善良,

+0

這看起來應該可以工作,但我沒有得到任何東西... – MrM 2010-01-14 17:52:53

+0

部分聲明如何? – Neal 2010-01-15 02:15:52

0

可以繼承主控制器的所有控制器。

然後,在你MainController可以設置在母版頁所需的所有數據(所有的全球性的東西)

Public MustInherit Class ApplicationController 
    Inherits System.Web.Mvc.Controller 

    Sub New() 
     ViewData("SideMenu") = getSideMenu() 
    End Sub 

End Class 

後來,在母版頁

<% Html.RenderPartial("SideMenu", ViewData("SideMenu")); %> 

還有其他的方法要做到這一點(這只是我做的方式),而在MVC 2.0中,有一個新的選項可以指向部分控制器。

相關問題