none
IE6.0中ScriptManager.RegisterStartupScript错误!!!求救!! RRS feed

  • 问题

  • 为解决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绿色版
    2009年4月28日 15:25

答案

  • 可以留言,没有任何问题,弹出了对话框,写了留言确实也是留言成功了。

    所以我觉得是浏览器的问题。。

    原来你用的是绿色版的啊,可能少了一些组件什么的吧。。

    低调,低调
    2009年4月29日 7:37
    版主

全部回复


  • System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "click", "alert('Hello Word!');", true);
    alter('xxx'); 要加分号,你查看源代码就知道为什么了
    知识改变命运,奋斗成就人生!
    2009年4月28日 15:37
    版主
  • 还是不行啊!!!

    运行错误:Sys.WebForms.PageRequestManagerServerErrorException: 在服务器上处理请求时出现未知错误

    2009年4月29日 0:16
  • 我在我的ie6试了一下,是可以的,你检查一下生成的html源代码,
    知识改变命运,奋斗成就人生!
    2009年4月29日 1:24
    版主
  • 问题好像不是出在这里了!!  我把所有System.Web.UI.ScriptManager.RegisterStartupScript语句都注释了,在ie6.0中还是出现错误!!  我使用的是UpdatePanel控件来实现ajax,是不是ie6.0支持问题?

    2009年4月29日 2:02
  • 你新建一个空白页面,拖个updatepaenl 试试呢?
    知识改变命运,奋斗成就人生!
    2009年4月29日 2:05
    版主
  • 我写了个简单的,在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;
            }
        }
    }

    2009年4月29日 2:23
  • 检查一下是不是ie6设置不正确,如果你使用的是vs 2005 检查一下ajax是不是最新版本
    知识改变命运,奋斗成就人生!
    2009年4月29日 2:34
    版主
  • ie6设置? 怎么设置啊?  我用的vs2008,应该是最新版本的ajax吧!
    2009年4月29日 2:39
  • 1.清一下ie6的临时文件
    2.安全设置和高级设置都还原一下默认

    知识改变命运,奋斗成就人生!
    2009年4月29日 2:41
    版主
  • 从你的代码上来看应该是没有什么问题的,可能是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);

     }


    低调,低调
    2009年4月29日 2:47
    版主
  • 前台代码:

    <%@ 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"

    2009年4月29日 3:19
  • 我记得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>
                    &nbsp;<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,你试试这个简单的看能不能运行。

    低调,低调
    2009年4月29日 4:01
    版主
  • 你写的这个简单的没问题可以运行!!
    但是我写的这个还是不能运行!

    前台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 = "";
        }

    2009年4月29日 5:58
  • 你的代码在我这边是没有问题的,你试试把那个HTML控件改成服务器控件试试,也用Textbox,不用TextArea试试。

    反正在我这边是可行的,你试试,又问题再讨论。。。

    低调,低调
    2009年4月29日 6:16
    版主
  • 不行!!  难道是我浏览器的问题?  我的电脑上的ie浏览器已经升级到ie8.0了,所以我用的是一个绿色版的ie6.0做测试~~~ 不知道是不是这个出了问题!!!

    http://www.zhangmaowen.com/guestbook.aspx

    能帮忙测试哈这个页面,在没有输入内容的时候,能不能弹出对话框?还有能否成功留言?  非常感谢!!!
    2009年4月29日 6:30
  • 可以留言,没有任何问题,弹出了对话框,写了留言确实也是留言成功了。

    所以我觉得是浏览器的问题。。

    原来你用的是绿色版的啊,可能少了一些组件什么的吧。。

    低调,低调
    2009年4月29日 7:37
    版主
  • 可能是你的浏览器问题,我的开发环境和你一样,但你的代码在我这里执行都是没有问题的
    知识改变命运,奋斗成就人生!
    2009年4月29日 7:40
    版主
  • 非常感谢!!! 
    2009年4月29日 8:25
  • 非常感谢!!!
    2009年4月29日 8:25
  • 那你应该给我标记为答复 :)
    低调,低调
    2009年4月29日 9:46
    版主
  • 哦  还要这样啊! 不好意思! 第一次来论坛,也是第一次发帖,我不知道。
    2009年5月1日 7:14