为什么我的ASP.NET母版页不能在内容页面中编译?

时间:2009-09-26 06:50:16

标签: asp.net master-pages

我正在编写包含母版页的第一个ASP.NET Web应用程序。然而,即使我似乎在书中使用它们,在运行项目时,母版页似乎不起作用。

我创建了一个Default.MasterPage lite:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Default.master.cs" Inherits="TimeTracker.Default" %>

<!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>My new pager</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <table>
            <tr>
                <asp:ContentPlaceHolder ID="PageHeader" runat="server">   
                </asp:ContentPlaceHolder>
            </tr>
            <tr>
            <asp:ContentPlaceHolder ID="Navigation" runat="server">
            </asp:ContentPlaceHolder>
            </tr>
            <tr>
                <asp:ContentPlaceHolder ID="Main" runat="server">  
                </asp:ContentPlaceHolder>
            </tr>
            <tr>
                <asp:ContentPlaceHolder ID="Footer" runat="server">  
                </asp:ContentPlaceHolder>
            </tr>      
            </table>     
        </div>
    </form>
</body>
</html>

两个内容页面如下: (PageHeader.aspx)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageHeader.aspx.cs" Inherits="TimeTracker.PageHeader"  MasterPageFile="~/Default.Master" Title="Header"%>

<asp:Content ID="Header" ContentPlaceHolderID="PageHeader" runat="server">
        Enalog Time-Tracker
</asp:Content>

和(Default.aspx)

<%@ Page Language="C#" MasterPageFile="~/Default.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TimeTracker._Default" Title="Login"%>

<asp:Content ID="LoginPage" ContentPlaceHolderID="Main" runat="server">
Login page
</asp:Content>

但是在运行项目时,MasterPage不会在内容页面中编译,即使我相信我已正确连接它们。因此,如果我运行Default.aspx,我只看到来自ContentPlaceHolderID =“Main”的内容,如果我运行PageHeader.aspx,我只看到ContentPlaceHolderID =“PageHeader”中的内容。 有谁知道我为什么会这样做,或者也许我在这里做错了什么? 提前谢谢!

2 个答案:

答案 0 :(得分:2)

您需要将两个部分放在内容页面中,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageHeader.aspx.cs"
    Inherits="TimeTracker._Default"  MasterPageFile="~/Default.Master" 
    Title="Login"%>

<asp:Content ID="HeaderContent" ContentPlaceHolderID="PageHeader" runat="server">
   This is my header
</asp:Content>

<asp:Content ID="MainContent" ContentPlaceHolderID="Main" runat="server">
   My main page content is here.
</asp:Content>

您可能不需要“标题”页面。

答案 1 :(得分:0)

您的母版页不包含任何&lt; td&gt;标签,因此表格没有任何可显示的内容。