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);
}

显然:

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

ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别的更多相关文章

  1. (转)ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 方法

    ScriptManager.RegisterStartupScript方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartu ...

  2. ScriptManager.RegisterStartupScript()方法和Page.ClientScript.RegisterStartupScript() 方法详解

    ScriptManager.RegisterStartupScript()方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStar ...

  3. Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别

    Page.ClientScript.RegisterClientScriptBlock 在页面紧跟<form>之后,整个页面未完全加载完成. Page.ClientScript.Regis ...

  4. Page.ClientScript.RegisterStartupScript

    Page.ClientScript.RegisterStartupScript方法最初可用的选项之一就是使用一个可实现此功能的 .NET 类来注册脚本块. 第一个是 RegisterStartupSc ...

  5. asp.net中Page.ClientScript.RegisterStartupScript用法小结(转)

    //ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<scri ...

  6. Page.ClientScript.RegisterStartupScript用法小结

    使用类型.键.脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本. 参数 type 要注册的启动脚本的类型. key 要注册的启动脚本的键. script 要注册的启动脚本文本. a ...

  7. Page.ClientScript.RegisterStartupScript不执行问题

    c#后台使用Page.ClientScript.RegisterStartupScript在前台注册一段脚本提示,发现没有效果,寻寻觅觅,终于从度娘处找到了原因: 该页面多次使用到了Page.Clie ...

  8. Page.ClientScript.RegisterStartupScript函数的使用

    Page.ClientScript.RegisterStartupScript(type,key,script,addScriptTags);type要注册的启动脚本的类型.key要注册的启动脚本的键 ...

  9. ThinkPHP的D方法和M方法的区别

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

随机推荐

  1. nodejs使用mongoose

    var mongoose = require("mongoose"); // 连接字符串格式为mongodb://主机/数据库名 mongoose.connect('mongodb ...

  2. SCSF智能客户端学习笔记(一)

    什么是智能客户端 要了解智能客户端,首先要认识瘦客户端技术和胖客户端技术各自的优缺点. 对于前者,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客 ...

  3. Ubuntu系统安装配置Pintos和Bochs

    Ubuntu系统安装配置 Pintos 和 Bochs 安装过程 首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写.可见博主的另一篇博客http:// ...

  4. 21、HierarchyViewer使用记录

    1.是啥 HierachyViewer是一种能够方便开发人员了解activity中的布局信息的工具. 2.异常 HierachyViewer在未root过的设备或者低版本的设备是无法使用的 3.怎么办 ...

  5. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  6. eclipse 中卸载插件的方法

    卸载步骤: Help -> About Eclipse -> Installation Details -> "点到你要删除的插件,如EclipseME" –&g ...

  7. 【Python】Eclipse和pydev搭建Python开发环境

    参考资料:         http://www.dotnet120.com/page/10545/   1.准备工作:         下载32位的JDK6 Java的开发包          下载 ...

  8. Matlab验证公式取值范围

    一.问题来源 t = 2xy/(x+y);融合相似度和信任度,我需要验证值域是不是[0,1]: 二.求解 clear all; clc; %linspace(0:1,0.1)这样是错的,第三个参数是段 ...

  9. depthstencil buffer 不支持 msaa

    phyreengine dx11 MRT不支持 depth rendertarget 的msaa 他里面竟然只写着,// not supported yet !!!! 导致hdao 时开msaa的话, ...

  10. vector内存分配

    vector,map 这些容器还是在堆上分配的内存,在析构时是释放空间 vector在提高性能可以先reserve在push_back() reserve:决定capacity,但没有真正的分配内存, ...