ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别
2015-08-14 15:48
483 查看
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 ,使用上述的区别
前台代码:
后台代码:
显然:
只有第三个按钮才能弹出信息,第一个按钮报错,第二个没反应
如果页面中不用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); }
显然:
只有第三个按钮才能弹出信息,第一个按钮报错,第二个没反应
相关文章推荐
- 设计模式学习笔记-观察者模式
- zoj 3823 Excavator Contest(结构体)
- Android主页导航:fragment+viewpager
- Lua.LearningLua.5-document-for-luaL_findtable-function
- Android基于mAppWidget实现手绘地图(十一)–移动地图到某个坐标
- Centos6 Postfix+Dovecot+Postfixadmin+Roundcube 搭建Webmail邮件系统
- C语言中两个实用的宏定义__DATE__和__TIME__
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
- 119 Pascal's Triangle II
- linux系统下无法创建mysql存储过程问题
- java设计模式之一 —— 工厂模式整理
- C#实现自定义Dictionary类实例
- Redis常用的命令(三)------字符串
- 数据结构实验之求二叉树后序遍历和层次遍历
- spring_jar包的详解
- H - Sum---(2015 summer training #12(Team_Qualifying))
- 服务器配置sqlserver远程连接
- servletFileUpload.parseRequest(request)解析为空获取不到数据问题
- 国际象棋跳马程序(自编码研究)
- 如何写一个简单的linux驱动