zoukankan      html  css  js  c++  java
  • ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别

    ScriptManager.RegisterStartupScript方法

    如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open('default2.aspx')</script>");

    如果页面中使用了Ajax ,则上述代码即使执行也无效果。

    对这种情况我们通常采用: ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "alertScript", "window.open('default2.aspx');", true);

    其中第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。

    第二个参数为注册脚本控件类型,是控件还是this的GetType()都可以,typeOf(string)也没问题.

    第三个脚本函数的名字,随便起。

    第四个是脚本内容。

    第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。

     

    如果在onClick事件中,使用该方法注册了两个脚本。如果注册的两个脚本函数的名称相同,则第二个脚本函数就不会执行。

    因为脚本管理器使用此字符串来分析是否是一个已经加载过的脚本,如果加载过,将不会再次渲染。所以第二个就不会加载执行了。

    测试:页面中使用了Ajax ,使用上述的区别

    前台代码:

     <form id="form1" runat="server">
        <asp:ScriptManager runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel runat="server">
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="Response测试" OnClick="Button1_Click" />
                <asp:Button runat="server" Text="Page测试" OnClick="Unnamed3_Click" />
                <asp:Button runat="server" Text="ScriptManager测试" OnClick="Unnamed4_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
        </form>

    后台代码:

      protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("<script>alert('Response.Write');</script>");
        }
        protected void Unnamed3_Click(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('Page');", true);
        }
        protected void Unnamed4_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "alert('ScriptManager');", true);
        }

    显然:

    只有第三个按钮才能弹出信息,第一个按钮报错,第二个没反应

  • 相关阅读:
    2021NUAA暑假集训 Day3 题解
    2021NUAA暑假集训 Day2 题解
    2021NUAA暑期模拟赛部分题解
    CodeForces 1038D Slime
    UVA 11149 Power of Matrix
    UVA 10655 Contemplation! Algebra
    UVA 10689 Yet another Number Sequence
    HDU 4549 M斐波那契数列
    HDU 4990 Reading comprehension
    CodeForces 450B Jzzhu and Sequences
  • 原文地址:https://www.cnblogs.com/ChineseMoonGod/p/4730233.html
Copyright © 2011-2022 走看看