【问题标题】:query regarding the master page in asp.net/C#/visual studio 2008关于 asp.net/C#/visual studio 2008 中的母版页的查询
【发布时间】:2011-04-03 00:43:14
【问题描述】:

我想在母版页的侧边栏中有 4 个链接,我的 Web 应用程序中的所有其他表单(内容页)都会继承这些链接。

<table>
        <tr>
            <td width= "150px">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                    <asp:Menu runat="server" ID="MainMenu1" CssClass="MasterContent" StaticSubMenuIndent="30px">
                        <Items>
                            <asp:MenuItem Text="My Software" NavigateUrl="~/MySoftware.aspx"></asp:MenuItem>
                            <asp:MenuItem Text="Check Out" NavigateUrl="~/CheckOut.aspx"></asp:MenuItem>
                            <asp:MenuItem Text="View Shopping Cart" NavigateUrl="~/ShoppingCart.aspx"></asp:MenuItem>
                            <asp:MenuItem Text="Continue Shopping" NavigateUrl="~/Start.aspx"></asp:MenuItem>
                        </Items>
                    </asp:Menu>
                </asp:ContentPlaceHolder>
            </td>
            <td width="900px">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
                </asp:ContentPlaceHolder>
            </td>
        </tr>
    </table>

这是母版页中的内容,如您所见,我尝试将 4 个菜单项设置为侧边栏,并尝试在 home.aspx(其中一个内容页面)中继承如下:

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Start.aspx.cs" Inherits="WebStore._Start"
MasterPageFile="~/Webstore.Master" %>
<asp:Content ID="StartSideBar" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">

但不幸的是,侧边栏根本没有显示出来。我知道我在某些地方做错了。我的目的是让网页有像this 这样的侧边栏。这是我想要的页面的截图。

谁能指导我完成这个。

感谢期待

【问题讨论】:

    标签: asp.net master-pages


    【解决方案1】:

    按照您的设置方式,您的 home.aspx 文件正在破坏您的菜单链接,因为它将 ContentPlaceholder1 的内容定义为空(或任何其他内容),这会覆盖您放入的菜单链接您的 MasterPage 在同一个内容持有者内。 MasterPages 和内容页面的工作方式是 MasterPage 为内容页面(例如 home.aspx)定义一个位置(ContentPlaceholder)来加载内容。但是您已将要保留的实际内容放在 MasterPage 上的 ContentPlaceholder 中 - 这意味着定义 ContentPlaceholder1 内容的任何内容页面(再次,如 home.aspx)(就像您对 StartSideBar 所做的那样)将覆盖任何定义的内容在 MasterPage 上的 ContentPlaceholder1 中——在这种情况下,您的菜单链接。

    如果您希望您的菜单链接在每个内容页面上保持不变,那么您应该将它们从 MasterPage 上的 ContentPlaceholder1 中移出,并使它们只是 MasterPage 上的标记(实际上,您可能应该完全删除 ContentPlaceholder1)。执行此操作的简单方法是注释掉 ContentPlaceholder 标记本身,如下所示:

    <table>
                <tr>
                    <td width="150px">
                        <%--<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">--%>
                            <asp:Menu runat="server" ID="MainMenu1" CssClass="MasterContent" StaticSubMenuIndent="30px">
                                <Items>
                                    <asp:MenuItem Text="My Software" NavigateUrl="~/MySoftware.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="Check Out" NavigateUrl="~/CheckOut.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="View Shopping Cart" NavigateUrl="~/ShoppingCart.aspx"></asp:MenuItem>
                                    <asp:MenuItem Text="Continue Shopping" NavigateUrl="~/Start.aspx"></asp:MenuItem>
                                </Items>
                            </asp:Menu>
                       <%-- </asp:ContentPlaceHolder>--%>
                    </td>
                    <td width="900px">
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
            </table>
    

    您还必须从内容页面中删除 ContentPlaceholder 引用,否则您将收到编译错误(因为您已将其从 Master 中删除,它不能存在于内容页面中 - 但没关系, MasterPage 现在有你想要的链接):

    <%@ Page Title="" Language="C#" MasterPageFile="~/Webstore.master" 
        AutoEventWireup="true" CodeFile="Start.aspx.cs" Inherits="Start" %>
    
    
        <%--<asp:Content ID="SideBarStart" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        </asp:Content>--%>
    

    【讨论】:

      猜你喜欢
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多