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。

注意:aspx代码是这样的

<div>   
  <asp:UpdatePanel ID="UpdatePanel1" runat="server">      
   <ContentTemplate>           
  <asp:TextBox runat="server" ID="TextBox2" >          
   </asp:TextBox>          
   <asp:Button runat="server" Text="Button" ID="Button1" onClick="Button1_Click" />      
   </ContentTemplate>    
     <Triggers>         
    <asp:PostBackTrigger ControlID="Button1" />    
     </Triggers>   
   </asp:UpdatePanel>
</div>

我在Button1_Click的事件里注册脚本,一定要加红色的部分,否则总是提示不能parse什么东西!

另外,js无法干涉cs代码。所以一旦脚本注册成功,js和cs代码会互不相干的各自运行。

以上的内容来自别人的文章,现在说一下自己的使用体会:

在按钮Button1的onClick事件中注册脚本可以这样写:ScriptManager.RegisterStartupScript(this.UpdatePanel1, Page.GetType(), System.DateTime.Now.Ticks.ToString(), "window.open('default2.aspx');", true);

页面中的红色部分也可以去掉了。

现在对第三个参数“脚本函数的名称”要特别说明一下,

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

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

Page.ClientScript.RegisterStartupScript() 方法

使用类型、键、脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本。

参数

type

要注册的启动脚本的类型。

key

要注册的启动脚本的键。

script

要注册的启动脚本文本。

addScriptTags

指示是否添加脚本标记的布尔值.

备注:

启动脚本由它的键和类型唯一标识。具有相同的键和类型的脚本被视为重复脚本。只有使用给定的类型和键对的脚本才能使用该页面进行注册。试图注册一个已经注册的脚本不会创建重复的脚本。

调用 IsStartupScriptRegistered 方法以确定具有给定的键和类型对的启动脚本是否已经注册,从而避免不必要的添加脚本尝试。

在 RegisterStartupScript 方法的此重载中,使用 addScriptTags 参数可指示 script 参数中提供的脚本是否包装在 <script> 元素块中。将 addScriptTags 设置为 true 指示脚本标记将自动添加。

RegisterStartupScript 方法添加的脚本块在页面加载完成但页面的 OnLoad 事件引发之前执行。

示例

<%@ Page Language="C#"%>
<script runat="server">
public void Page_Load(Object sender, EventArgs e)
{
// Define the name and type of the client scripts on the page.
String csname1 = "PopupScript";
String csname2 = "ButtonClickScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
String cstext1 = "alert('Hello World');";
cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}
// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
{
StringBuilder cstext2 = new StringBuilder();
cstext2.Append("<script type=text/javascript> function DoClick() {");
cstext2.Append("Form1.Message.value='Text from client script.'} </");
cstext2.Append("script>");
cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
}
}
</script>
<html>
<head>
<title>ClientScriptManager Example</title>
</head>
<body>
<form id="Form1"
runat="server">
<input type="text" id="Message"> <input type="button" value="ClickMe" οnclick="DoClick()">
</form>
</body>
</html>

(转)ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 方法...相关推荐

  1. ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别

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

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

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

  3. Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...

    最初可用的选项之一就是使用一个可实现此功能的 .NET 类来注册脚本块. 第一个是 RegisterStartupScript 方法.当您有一个想要在页面加载时 启动的 JavaScript 函数时, ...

  4. page.ClientScript.RegisterStartupScript

    page.ClientScript.RegisterStartupScript()可以添加客户端脚本,有4个参数 type:要注册的启动脚本的类型. key:要注册的启动脚本的键. script:要注 ...

  5. Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法

    Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法 Posted ...

  6. 转:Page.ClientScript.RegisterStartupScript(me.GetType(),script1,scriptalert('111');/script)...

    后台用Response.Write("<script>alert('被其他表所引用,不能删除')</script>");这样的方法,弹出提示框后,发现页面样 ...

  7. (转)Page.ClientScript.RegisterStartupScript 与Page.ClientScript.RegisterClientScriptBlock 之间的区别...

    主要区别在于,RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面.RegisterCl ...

  8. Node.js的环境搭建方法和 npm 的使用方法

    Node.js的环境搭建方法和 npm 的使用方法 Node.js 环境的搭建 Node.js 介绍 Node.js 下载 配置Node.js node.js 测试 npm(包管理器)使用方法 npm ...

  9. [Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法

    深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...

最新文章

  1. 2.10 是否要使用端到端的深度学习-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  2. Linux DNS服务配置与管理详解
  3. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQLEF
  4. ITK:计算梯度各向异性扩散
  5. windows7 docker mysql_DOCKER windows 7 详细安装教程
  6. 【Elasticsearch】Elasticsearch:Elasticsearch中的refresh和flush操作指南
  7. 使用xUnit测试验证属性
  8. Matlab 小波变换dwt和wavedec
  9. Ubuntu下安装Flask虚拟环境及使用
  10. MethodFilterInterceptor(方法拦截器)配置excludeMethors
  11. 谷歌云盘Colab使用心得
  12. 供给、需求、有效供给、有效需求
  13. 火狐浏览器怎么打不开网页
  14. 数据库视图效率低下一例
  15. 阿里云-内容安全-接口demo
  16. OOP和POP的区别
  17. 左式堆(左高树)实现
  18. CSS一级导航-天蓝色(带阴影)
  19. 阿里开源的10个神级项目
  20. 如何恢复电脑的administrator账户

热门文章

  1. 华为5G微交易修复版源码 K线/结算全修复 去短信+去邀请码
  2. 阿里云学生轻量级应用服务器安装MySQL
  3. ollyice的学习
  4. 如何在PHP开启gzip页面压缩实例
  5. Swift中文教程(十四) 初始化
  6. Linux shell 下的复制和粘贴(Copy Paste Operation on Linux shell)
  7. 【AI视野·今日CV 计算机视觉论文速览 第210期】Tue, 1 Jun 2021
  8. Hadoop—如何查看HDFS默认的ns命名空间和所有命名空间列表
  9. 草稿 listview控件切换大小图标
  10. 阿里云 快照恢复的操作过程