【问题标题】:Can I Inherit something on my Site.Master page MVC?我可以在我的 Site.Master 页面 MVC 上继承某些内容吗?
【发布时间】:2011-01-05 03:34:38
【问题描述】:

我正在尝试熟悉 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>

【问题讨论】:

  • 你到底想做什么?您拥有的代码似乎没有多大意义:如果您实例化一个新的 ViewPage,它的模型将总是为空,因为没有人在那里放任何东西。您是否尝试将当前视图的模型传递到局部视图中?还是别的什么?

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


【解决方案1】:

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

比如

<%@ Import Namespace="DataLibrary" %>

还有,我觉得行

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

应该是

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

善良,

【讨论】:

    【解决方案2】:

    您可以从主控制器继承所有控制器。

    然后,在您的 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 中有一个新选项可以在部分中引用控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多