这种情况最典型的原因是单击按钮事件里有类似Response.Write这样的语句,由于ASP.NET 2.0默认采用http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd文档类型定义,它就要求在<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">的前面不能有任何输出。这种问题的解决方法是采用ClientScriptManager输出,或者采用Literal控件输出内容。
有些人不知道使用RegisterStartupScript输出文本(非脚本内容),以为它只能输出<script>这些脚本内容,而不能输出html代码,因此当要输出html代码时,只能使用Response.Write的方法。这其实是对RegisterStartupScript没有正确理解造成的误区。看一下RegisterStartupScript输出的内容,其实就是一段内容,为什么不能写使用它输出html呢(尽管这个功能不是很常用)!下面就是使用RegisterStartupScript输出非脚本的例子: <%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click( object sender, EventArgs e )
{
//response.write("<h1>测试</h1>");
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<h1>测试</h1>");
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="单击测试" />
</form>
</body>
</html>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/net_lover/archive/2007/09/11/1780289.aspx