我有一个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">
我得到一个解析错误。我做错了什么?
答案 0 :(得分:7)
解析器错误可能是因为您在ASPX页面的根目录中放置了<asp:ContentPlaceHolder>
以外的其他内容。
如果您使用的是MasterPageFile
,则<!DOCTYPE
应位于MasterPage的开头。
除非您在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>
然后在你要覆盖的页面中输入以下内容(通过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>
...