3

我是 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>

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

4

2 回答 2

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应该在master中列出。第二:

<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>
于 2012-06-13T23:16:34.817 回答
2

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

例如:

<%@ Page Language="C#" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%>
于 2012-06-13T23:10:51.590 回答