无法将Master页面绑定到我的页面

时间:2012-06-13 23:08:49

标签: asp.net

我是ASP.Net的新手,我想创建一个非常简单的表单,它绑定到母版页但没有成功。这是我的母版页代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head>
<body>
<form runat=server>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
  <body>
   <table width=100% border=1 style="background:black" >
    <tr>
      <td width=20%></td>
      <td width=80%><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
      <td width=20%></td>
    </tr>
   </table>
  </body>
 </asp:ContentPlaceHolder>
</form>

</body>
</html>

我的网页代码是:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<asp:Content ContentPlaceHolderID=HeadContent runat=server>
</asp:Content>   

<asp:Content ID="MainContent" runat=server ContentPlaceHolderID=MainContent >
</asp:Content>

但是母版页中的hte表没有出现在页面中。你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

首先,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<asp:Content ContentPlaceHolderID=HeadContent runat=server>
</asp:Content>   

<asp:Content ID="MainContent" runat=server ContentPlaceHolderID=MainContent >
</asp:Content>

完全错了。

DOCTYPE应列在主人中。其次:

<asp:Content ID="HContent" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>

<asp:Content ID="MainContent" runat="server" ContentPlaceHolderID="MainContent" >
</asp:Content>

会更符合您的意图。但是你的风格中存在一个缺陷,这是严格意义上的风格:

<asp:Content ID="HContent" ContentPlaceHolderID="HeadContent" runat="server" >
</asp:Content>

<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" runat="server" >
</asp:Content>

注意我如何在两个标签上放置runat="server"?总是把它放在最后,这样可以更容易确保你把它放在正确的位置。或者,始终在ID

之前将其放在正确的位置

编辑:

<asp:ContentPlaceHolder ID="MainContent" runat="server">
  <body>
   <table width=100% border=1 style="background:black" >
    <tr>
      <td width=20%></td>
      <td width=80%><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
      <td width=20%></td>
    </tr>
   </table>
  </body>
 </asp:ContentPlaceHolder>

如果您在母版页中有此内容,则当子页面实现此部分时,ContentPlaceHolder的内容将不会显示。您需要移动主页ContentPlaceHolder声明之外的那些。这个概念非常“或者是”,而且没有其他观点的余地。它是故意这样编写的。

也许你想要:

<asp:ContentPlaceHolder ID="MainContent" runat="server" />
<body>
 <table width=100% border=1 style="background:black" >
  <tr>
    <td width=20%></td>
    <td width=80%><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></td>
    <td width=20%></td>
  </tr>
 </table>
</body>

答案 1 :(得分:2)

您是否在@Page指令中指定母版页?

例如:

<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%>