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)
{
[color=Red]Response.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");[/color]
}
}2010-03-29补充:将xml声明放到第1行也可解决问题
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WAP_MasterPage.master.cs" EnableViewState="false" Inherits="MasterPage_WAP_MasterPage" %>[color=Red]<?xml version="1.0" encoding="utf-8"?>[/color]
<!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)
暂无评论。