查询有关asp.net/C#/visual studio 2008中的母版页

时间:2011-04-03 00:43:14

标签: asp.net master-pages

我希望在母版页的侧边栏中有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这样的侧边栏。它是我想要的页面的屏幕截图。

有人可以指导我完成这件事。

感谢您的期待

1 个答案:

答案 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>--%>