将HTML放在ASPX中 - 可能吗?

Ros*_*ss 2 html asp.net

我有一个aspx页面,开头是这样的:

<%@ Page Language="C#" MasterPageFile="~/Main_MP_Teacher.master" AutoEventWireup="true" CodeFile="default.aspx.cs"
    Inherits="Teacher_default" Title="Teacher Page" %>
Run Code Online (Sandbox Code Playgroud)

我想在这个页面中包含html但是当我放入第一行时

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

我得到一个解析错误.我究竟做错了什么?

fre*_*ler 7

解析器错误可能是因为您在<asp:ContentPlaceHolder>ASPX页面的根目录中放置了其他内容.

如果你正在使用a MasterPageFile那么<!DOCTYPE应该在MasterPage的开头.

除非您<asp:ContentPlaceHolder>在MasterPage的开头有权,否则您可以将其<!DOCTYPE放入其中.

更多信息

<!DOCTYPE应始终在HTML文件中的第一件事,所以通常你会母版看起来像这样...

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你想要一个页面指定的文档类型,那么你可以在开始时添加一个新的占位符,默认值为...

<%@ 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>
Run Code Online (Sandbox Code Playgroud)

然后在你要覆盖的页面中输入以下内容(通过NOT覆盖,将输出原始内容)...

<%@ 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>
...
Run Code Online (Sandbox Code Playgroud)