【问题标题】:Why do my ASP.NET Master pages dont compile in content pages?为什么我的 ASP.NET 母版页不能在内容页中编译?
【发布时间】:2009-09-26 06:50:15
【问题描述】:

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

我已经创建了一个 Default.MasterPage 精简版:

<%@ 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>

和(默认.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" 的内容。 有谁知道我为什么会出现这种行为,或者我在这里做错了什么? 提前致谢!

【问题讨论】:

    标签: asp.net master-pages


    【解决方案1】:

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

    <%@ 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>
    

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

    【讨论】:

    • 啊,现在我明白了!非常感谢您的帮助!
    【解决方案2】:

    您的母版页不包含任何

    标记,因此表格没有任何可显示的内容。

    【讨论】:

    • 虽然确实如此,但大多数浏览器会将 Blah 显示为 Blah。不过,原始发帖人应该将 ... 标记添加到母版页。
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 2013-02-08
    • 1970-01-01
    • 2020-06-08
    • 2017-09-01
    • 2010-09-15
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多