2

次のように始まる aspx ページがあります。

<%@ Page Language="C#" MasterPageFile="~/Main_MP_Teacher.master" AutoEventWireup="true" CodeFile="default.aspx.cs"
    Inherits="Teacher_default" Title="Teacher Page" %>

このページにもhtmlを含めたいのですが、最初の行に入れると

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">

解析エラーが発生します。私は何を間違っていますか?

4

1 に答える 1

7

<asp:ContentPlaceHolder>パーサーエラーは、ASPXページのルート以外のものを配置していることが原因である可能性があります。

を使用している場合は、MasterPageの先頭にある必要がありますMasterPageFile<!DOCTYPE

これは、MasterPageの開始時に権利を持っていない限り<asp:ContentPlaceHolder>、そこに入れることができます<!DOCTYPE

詳しくは

<!DOCTYPE常にHTMLファイルの最初のものである必要があるため、通常、MasterPageは次のようになります...

<%@ Master Language="VB" CodeBehind="MyMaster.master.vb" Inherits="dev.MyMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
<html>
  <head>
    <asp:ContentPlaceHolder runat="server" id="myHeader"/>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:ContentPlaceHolder runat="server" id="myBody"/>
    </form>
  </body>
</html>

何らかの理由でページ指定のドキュメントタイプが必要な場合は、最初に新しいプレースホルダーをデフォルト値で追加できます...

<%@ Master Language="VB" CodeBehind="MyMaster.master.vb" Inherits="dev.MyMaster" %>
<asp:ContentPlaceHolder runat="server" id="myDocType">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
</asp:ContentPlaceHolder>
<html>
  ...
</html>

次に、オーバーライドするページに次のように入力します(オーバーライドしないことで、代わりに元のページが出力されます)...

<%@ Page Language="vb" MasterPageFile="MyMaster.master" Codebehind="MyPage.aspx.vb"
  Inherits="dev.MyPage" Title="My Page" %>
<asp:Content runat="server" ContentPlaceHolderId="myDocType">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
</asp:Content>
...
于 2012-07-03T11:42:22.870 に答える