我希望在母版页的侧边栏中有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这样的侧边栏。它是我想要的页面的屏幕截图。
有人可以指导我完成这件事。
感谢您的期待
答案 0 :(得分:3)
你设置它的方式,你的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引用,否则您将收到一个compliation错误(因为您从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>--%>