我的应用程序现在有几页,我将开始使用母版页来减少HTML中的代码量。所以我创建了一个使用母版页面的网页表格'目前我有一个我在那里创建的菜单栏:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="PersonnelMasterPage.master.cs" Inherits="bSimplex.Personnel.PersonnelMasterPage" %>
<asp:ContentPlaceHolder ID="cnt_MenuBar" runat="server">
<div class="bsimplex header-bar left">
<div class="header-context clearfix header-label">
<asp:Image ID="bsimplexPTLogo" runat="server" CssClass="small-logo" ImageUrl="~/Images/tracker logoOnly.png" />
<label class="configurationlbl">Personnel Tracker</label>
</div>
<div class="menubarbest">
<ul id="nav">
<li class="current"><a href="bPersonnelTrackerDashboard.aspx" >Home</a></li>
<li><a href="#">Manager</a>
<ul>
<li><a href="#">Rota</a></li>
<li><a href="#">Holiday Requests</a></li>
</ul>
</li>
<li><a href="#">Absences</a>
<ul>
<li><a href="bSicknessForm.aspx">Sickness</a></li>
<li><a href="bLatenessForm.aspx">Lateness</a></li>
<li><a href="bMedicalLeaveForm.aspx">Medical Appointment</a></li>
<li><a href="OtherMedical.aspx">Other</a></li>
</ul>
</li>
<li><a href="#">Reports</a>
<ul>
<li><a href="#">Attendance Record</a></li>
<li><a href="#">Rota</a></li>
</ul>
</li>
<li><a href="Admin/Administration.aspx">Admin</a></li>
</div>
</div>
</asp:ContentPlaceHolder>
然后在我刚刚创建的Web表单上添加了此内容持有者:
<%@ Page Title="" Language="C#" MasterPageFile="~/Personnel/PersonnelMasterPage.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="bSimplex.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cnt_MenuBar" runat="server">
</asp:Content>
首先,我的页面上没有显示任何内容,我想知道我做错了什么?
其次,我有这个菜单栏的CSS样式会保持不变还是因为我已经进入Master页面需要更改吗?
答案 0 :(得分:3)
在您的母版页上,不要将内容放在 ContentPlaceHolder中。 CPH是您要放置子页面内容的区域(使用内容控件)。
在您的母版页上,如果您将内容放在ContentPlaceHolder中,如果您在子页面上添加相应的内容控件,它将被覆盖。因此大多数情况下,您不会在主页上的CPH中放置任何内容。例外情况是,如果您想要某些“默认”内容,可以覆盖某些子页面。
顺便说一下,您的顶级母版页应该包含您网站的基本布局以及所有必需的标签(例如:<html><head><title><body>
等)。然后,将这些ContentPlaceHolders放在您希望子页面添加其内容的位置。
您的CSS应该没有更改,但您需要从母版页而不是子页面链接到它。
答案 1 :(得分:2)
您似乎希望在多个页面之间共享菜单,因此我会尝试这样做:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="/css/style.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="bsimplex header-bar left">
<div class="header-context clearfix header-label">
<asp:Image ID="bsimplexPTLogo" runat="server" CssClass="small-logo" ImageUrl="~/Images/tracker logoOnly.png" />
<label class="configurationlbl">Personnel Tracker</label>
</div>
<div class="menubarbest">
<ul id="nav">
<li class="current"><a href="bPersonnelTrackerDashboard.aspx" >Home</a></li>
<li><a href="#">Manager</a>
<ul>
<li><a href="#">Rota</a></li>
<li><a href="#">Holiday Requests</a></li>
</ul>
</li>
<li><a href="#">Absences</a>
<ul>
<li><a href="bSicknessForm.aspx">Sickness</a></li>
<li><a href="bLatenessForm.aspx">Lateness</a></li>
<li><a href="bMedicalLeaveForm.aspx">Medical Appointment</a></li>
<li><a href="OtherMedical.aspx">Other</a></li>
</ul>
</li>
<li><a href="#">Reports</a>
<ul>
<li><a href="#">Attendance Record</a></li>
<li><a href="#">Rota</a></li>
</ul>
</li>
<li><a href="Admin/Administration.aspx">Admin</a></li>
</div>
</div>
<div>
<asp:ContentPlaceHolder ID="cnt_Body" runat="server"></asp:ContentPlaceHolder>
</div>
</body>
然后在WebForms页面上,执行以下操作:
<%@ Page Title="" Language="C#" MasterPageFile="~/Personnel/PersonnelMasterPage.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="bSimplex.WebForm1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cnt_Body" runat="server">
<h1>Sickness Form</h1>
<p>Please fill out the following sickness form...</p>
</asp:Content>
答案 2 :(得分:1)
占位符元素是一个因页面而异的区域。我不认为您希望菜单栏有所不同。因此,将菜单条形码放在母版页中的占位符之前,或者更好地放在用户控件中