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マスターにリストされている必要があります。第二に:

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

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

あなたの意図により密接に一致します。しかし、あなたのスタイルには、いわば1つの欠陥があり、これは厳密にはスタイルの問題です。

<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 に答える