XML declaration not at beginning of document

在VS2008下建了一个WAP母版页,代码如下:

WAP_MasterPage.master:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WAP_MasterPage.master.cs" Inherits="MasterPage_WAP_MasterPage" %>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Wap">
<p>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
</p>
</card>
</wml>

放在Opera测试时老出错,提示:XML declaration not at beginning of document。



查看源代码,发现在xml声明前边多了一个空白行,所以Opera报错说xml声明不是在文档的最开始:



郁闷的是怎么弄那空白行都删除不了,再查看其他普通的ASPX页,发现第一行也都是空白行。后来突然想起以前有测试过在Page_Load事件中输出的文本是从顶行开始的,便想将xml声明放在Page_Load中输出,测试下了,果然可以,Opera也不报错了。

WAP_MasterPage.master:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WAP_MasterPage.master.cs" Inherits="MasterPage_WAP_MasterPage" %>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Wap">
<p>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
</p>
</card>
</wml>

WAP_MasterPage.master.cs:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class MasterPage_WAP_MasterPage : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    }
}

2010-03-29补充:将xml声明放到第1行也可解决问题
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WAP_MasterPage.master.cs" EnableViewState="false" Inherits="MasterPage_WAP_MasterPage" %><?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="Wap">
<p>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
</p>
</card>
</wml>


评论: 0 | 引用: 0 | 查看次数: 4986
发表评论
登录后再发表评论!