我可以在我的Site.Master页面MVC上继承一些东西吗?

时间:2010-01-14 16:04:36

标签: c# .net asp.net html asp.net-mvc

我正在努力熟悉MVC环境。我想在我的默认母版页面上添加一个侧边菜单。但是我需要添加一个继承来获取我的数据。我可以这样做,或者我必须保留'Inherits =“System.Web.Mvc.ViewMasterPage”'?

<%@ 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>

2 个答案:

答案 0 :(得分:2)

您不需要继承,我相信您只需要使用导入指令

,例如

<%@ Import Namespace="DataLibrary" %>

另外,我认为该行

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

应该是

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

善,

答案 1 :(得分: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中有一个新的选项来引用部分控制器。