在ASP.NET母版页中使用多个contentPlaceHolders

时间:2012-08-24 05:33:47

标签: asp.net master-pages contentplaceholder

我正在创建一个在不同页面中具有不同菜单的网站。因此,我正在创建一个母版页面,其中包含3个内容占位符,分别用于页面标题,菜单和内容。我无法为此母版页创建内容页面。任何帮助,将不胜感激。如果我没有遵循正确的指导原则,请原谅我,因为我是新手。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="PTS.Master.cs" Inherits="PTS.UI.Site1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Patient Tracker System</title>
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
    <style type="text/css">
        .style1
        {
            font-size: small;
        }
    </style>
</head>
<body>
<section id = "main>
 <asp:ContentPlaceHolder ID="ContentPlaceHolderMain" runat="server">
    <form id="form1" runat="server">
    <div id="wrapper">
    <div id="page">
        <div id="page-bgtop">
            <div id="page-bgbtm">
                <div id="content">
                   <!-- Enter Your Contents Here-->
                    <asp:ContentPlaceHolder ID="ContentPlaceHolderContent" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
                <!-- end #content -->
                <div id="logo">
                    <h1 class="style1"><a href="#">Patient Tracker System</a></h1>
                    <br />
                    <br />
                     <asp:ContentPlaceHolder ID="ContentPlaceHolderPageHead" runat="server">
                    </asp:ContentPlaceHolder>

                </div>
                <div id="sidebar">

                    <%--Paste your Customized Menus--%> 
                    <asp:ContentPlaceHolder ID="ContentPlaceHolderMenu" runat="server">
                    </asp:ContentPlaceHolder>
                </div>
                <!-- end #sidebar -->
                <div style="clear: both;">&nbsp;</div>
            </div>
        </div>
    </div>
    <!-- end #page -->
</div>
<div id="footer">
    <p>Copyright (c) 2012 Patient Tracker System.</p>
</div>
<!-- end #footer -->
    </form>
     </asp:ContentPlaceHolder>
    </section>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

母版页上ContentPlaceHolder内的任何内容都是默认内容。 “默认内容”的含义是,如果您未在子页面上指定ContentPlaceHolder的内容,则将呈现默认内容。这对于在某些情况下减少代码重复很有用。

但是,您将整个<form>包裹在ContentPlaceHolderMain内,这不是一个好的模式。

您的母版页看起来大致正确,但您可能想删除ContentPlaceHolderMain开始和结束标记。

然后,您将留下您在问题中提到的3 ContentPlaceHolder

此外,您的一个评论栏中也有拼写错误:

<%--Paste your Customized Menus--%>

应改为:

<!-- Paste your Customized Menus -->