积极答复者
IE6.0中ScriptManager.RegisterStartupScript错误!!!求救!!

问题
-
为解决AJAX中使用UpdatePanel后再用Response.Write();无法弹出对话框问题,我用System.Web.UI.ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "click", "alert('Hello Word!')", true);代替,可问题也来了,在ie7.0和ie8.0中都正常,可是在ie6.0中就不行,报错!!
请高手指教啊!!!- 已移动 Sheng Jiang 蒋晟Moderator 2009年4月28日 19:12 Asp.net ([Loc]From:Visual C#)
- 已编辑 清风落叶 2009年4月29日 8:31 我的电脑上安装的浏览器的问题,因为用的ie6.0绿色版
答案
全部回复
-
我写了个简单的,在ie6.0中还是报错
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="username" runat="server"></asp:TextBox><asp:Label ID="Label2" runat="server"
></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
后台代码部分:
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (username.Text == "")
{
this.Label2.Text = "请输入昵称!";
return;
}
}
} -
从你的代码上来看应该是没有什么问题的,可能是IE 6的支持性不够好吧,或者是你后台代码哪里出错了,你可以一步步debug来试试,在我这边可以运行。你可以自定义捕获异常或者设置,试试看吧,validateRequest="false"。
if (args.get_error() != undefined)
{
// If there is, show the custom error.
$get('Error').style.visibility = "visible";
// Let the framework know that the error is handled,
// so it doesn't throw the JavaScript alert.
args.set_errorHandled(true);
}
低调,低调 -
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="username" runat="server"></asp:TextBox><asp:Label ID="Label2" runat="server"
></asp:Label>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager1.RegisterAsyncPostBackControl(Button1);
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
if (username.Text == "")
{
this.Label2.Text = "请输入昵称!";
return;
}
}
catch (Exception ee)
{
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "Button1_Click", "<script>alert('" + ee.Message + "')</script>", true);
}}
}
错误提示:"Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误。服务器返回的状态码为: 12030" -
我记得AJAX控件好像不能在页面中使用Response.Write方法,我不知道你为什么要先注册一个异步回传的方法,不过我试了一下,你可以copy一下我的代码,看能不能用。前台代码HTML。<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title></title></head><body><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><div><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Button ID="Button1" runat="server" onclick="Button1_Click"Text="Button" /></ContentTemplate></asp:UpdatePanel></div></form></body></html>后台代码protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){Label1.Text = "It works!";}为了方便你copy,你试试这个简单的看能不能运行。
低调,低调 -
你写的这个简单的没问题可以运行!!
但是我写的这个还是不能运行!
前台html代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div style="padding:20px 0 20px 0;"><strong>发表留言</strong></div>
<table style="width: 100%;">
<tr>
<td >
昵 称:
</td>
<td>
<asp:TextBox id="username" name="username" runat="server"></asp:TextBox>
<asp:Label ID="Label2" runat="server" ForeColor="Red"></asp:Label>
</td>
</tr>
<tr>
<td class="td_left" valign="top">
留 言:
</td>
<td>
<textarea id="TextArea1" name="TextArea1" cols="20" rows="2" runat="server"></textarea>
</td>
</tr>
</table>
<asp:Button ID="Button1" runat="server" CssClass="but" Text="发表留言"
UseSubmitBehavior="False" onclick="Button1_Click"/>
<asp:Label ID="Label1" runat="server">请不要输入特殊字符!</asp:Label>
<asp:Label ID="Label3" runat="server" ForeColor="Red"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
}protected void Button1_Click(object sender, EventArgs e)
{
if (username.Text == "")
{
this.Label2.Text = "请输入昵称!";
return;
}
this.Label2.Text = "";
if (Request.Form["TextArea1"].ToString() == "")
{
this.Label3.Text = "请输入留言!";
return;}
this.Label3.Text = "";
} -
不行!! 难道是我浏览器的问题? 我的电脑上的ie浏览器已经升级到ie8.0了,所以我用的是一个绿色版的ie6.0做测试~~~ 不知道是不是这个出了问题!!!
http://www.zhangmaowen.com/guestbook.aspx
能帮忙测试哈这个页面,在没有输入内容的时候,能不能弹出对话框?还有能否成功留言? 非常感谢!!!