ClientScriptManager在非异步(就是说非AJAX)环境下使用的。如果要在异步环境下注册脚本应该使用ScriptManager的静态方法来注册(ScriptManager兼容异步于非异步环境下注册脚本)。ClientScriptManager中注册脚本的方法在ScriptManager中都有一一对应的方法,但是有一些区别,ScriptManager中的方法多了一个参数(多了第一个参数),而且使用ScriptManager来注册脚本不是绝对能注册成功的。

.aspx文件代码

<%@ page language="C#" autoeventwireup="true" codefile="ClientScriptManager.aspx.cs" inherits="Demo4_ClientScriptManager" %>

<!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>ClientScriptManager</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:button id="Button1" runat="server" text="Button" onclick="Button1_Click" />
    </form>
</body>
</html>

.aspx.cs文件代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; public partial class Demo4_ClientScriptManager : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
     protected void Button1_Click(object sender, EventArgs e)
     {
         ClientScriptManager cs = this.ClientScript;
         cs.RegisterArrayDeclaration("Hello", "1, 2, 3");//#1
         cs.RegisterClientScriptBlock(this.GetType(), "HelloWorld", "function helloWorld(){alert(1);}", true);//#2
         cs.RegisterClientScriptInclude("HelloWorld", "HelloWorld.js");//#3
         cs.RegisterExpandoAttribute(this.Button1.ClientID, "Hello", "World");//#4
         cs.RegisterHiddenField("hello", "world");//#5
         cs.RegisterOnSubmitStatement(this.GetType(), "HelloWorld", "return window.confirm('Do you really want to submit the form?')");//#6
         cs.RegisterStartupScript(this.GetType(), "HelloWorld", "<script>alert('The page has loaded!')</script>");//#7
     }
}

生成页面的HTML代码

<!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>
    <title>ClientScriptManager</title>
</head>
<body>
    <form id="form1" name="form1" method="post" action="ClientScriptManager.aspx" onsubmit="javascript:return WebForm_OnSubmit();">
    <div>
        <!--   #5   -->
        <input type="hidden" name="hello" id="hello" value="world" />
        <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTQ2OTkzNDMyMWRkdcWxeVaF9qGYsIaDUa9Rcaihgnk=" />
    </div>
    <!--   #2   -->
    <script type="text/javascript">         function helloWorld() { alert(1); }
    </script>     <!--   #3   -->
    <script src="HelloWorld.js" type="text/javascript"></script>
    <!--   #6   -->
    <script type="text/javascript">
        function WebForm_OnSubmit() {
            return window.confirm('Do you really want to submit the form?');
            return true;
        }     </script>
    <input type="submit" name="Button1" value="Button" id="Button1" />      <!--   #1   -->
    <script type="text/javascript">
        var Hello = new Array(1, 2, 3);
    </script>
    <!--   #4   -->
    <script type="text/javascript">
        var Button1 = document.all ? document.all["Button1"] : document.getElementById("Button1");
        Button1.Hello = "World";
    </script>
    <div>
        <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKet4KWBgKM54rGBikWLuZSHp4emnxNA3F0qTbFNfuo" />
    </div>
    <!--   #7   -->
    <script>
        alert('The page has loaded!')
    </script>
    </form>
</body>
</html> 

使用ScriptManager向客户端注册脚本

使用ScriptManager来向客户端注册脚本时,不一定每次都会成功生效,只有UpdatePanel更新了,才会注册成功。因为注册脚本的行为是在UpdatePanel更新后执行的。

.aspx文件代码

<%@ page language="C#" autoeventwireup="true" codefile="ScriptManagerReg.aspx.cs" inherits="Demo5_ScriptManagerReg" %>

<!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>ScriptManagerReg</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:scriptmanager id="ScriptManager1" runat="server"> </asp:scriptmanager>
    <asp:updatepanel id="UpdatePanel1" runat="server">
              <ContentTemplate>
                   <%= DateTime.Now %>
                   <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
              </ContentTemplate>
         </asp:updatepanel>
    <asp:updatepanel id="UpdatePanel2" runat="server" updatemode="Conditional">
              <ContentTemplate>
                   <%= DateTime.Now %>
              </ContentTemplate>
         </asp:updatepanel>
    </form>
</body>
</html> 

.aspx.cs文件代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; public partial class Demo5_ScriptManagerReg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {     }      protected void Button1_Click1(object sender, EventArgs e)
     {
        //#1
         ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "UpdatePanel1", "alert(1)", true);
        //#2
         ScriptManager.RegisterStartupScript(this.UpdatePanel2, this.GetType(), "UpdatePanel2", "alert(2)", true);
     }
}
 

说明

运行程序后,第一个时间会更新,更新后会alert(1);

因为UpdatePanel2的UpdateMode="Conditional",不是每次都更新,所以不会有alert(2);

只要UpdatePanel2的UpdateMode="Always",则UpdatePanel2每次都更新,因为能更新了,所以alert(2);就会注册成功。

使用ClientScriptManager向客户端注册脚本的更多相关文章

  1. ClientScriptManager与ScriptManager向客户端注册脚本的区别

    使用ClientScriptManager向客户端注册脚本 ClientScriptManager在非异步(就是说非AJAX)环境下使用的.如果要在异步环境下注册脚本应该使用ScriptManager ...

  2. 向Page对象注册脚本

    在madn上ClientScriptManager 类的示例: <%@ Page Language="C#"%> <!DOCTYPE html PUBLIC &q ...

  3. 第8章 动态客户端注册 - IdentityModel 中文文档(v1.0.0)

    OpenID Connect动态客户端注册的客户端库是作为HttpClient扩展方法提供的. 以下代码发送注册请求: var client = new HttpClient(); var respo ...

  4. Eureka客户端注册多网卡下IP选择问题

    在使用Spring Cloud多人协作开发时有一个场景:我本机启动了Eureka注册中心,其他人机器需要将服务注册到我本机的Eureka.(服务端和客户端在不同机器上) 这时出现了一个问题:服务成功注 ...

  5. 记一次eureka客户端注册失败的问题

    最近老大给了一台新服务器,做测试用,从装软件开始,到把整个环境搭起来,因为之前没有完成搭过,所以费了几天时间,最后总算是成功跑起来了.昨天早上来更新下项目,在测试服务器上重新发布了一下,结果发现服务注 ...

  6. 使用TortoiseSVN的客户端钩子脚本触发Jenkins构建

    我们项目在开发过程中使用了Jenkins构建Windows版本,为了通过自动触发使构建的版本保持最新,可以采用的方法如下: Jenkins Poll SCM:设置Jenkins定时检查变更,在SVN版 ...

  7. Watcher详解 工作机制, Watcher客户端注册、Watcher 服务端注册

    Watcher详解.接口 在 ZooKeeper 中, 接口类 Watcher 用于表示一个标注你的事件处理器,其定义了事件通知相关的逻辑,包含 KeeperState 和 EventType 两个枚 ...

  8. 客户端注册Cannot execute request on any known server解决

    在对eureka注册中心服务端添加安全验证后,新版本springcloud出现一个问题就是,在客户端注册到服务中心时报了一个错:Cannot execute request on any known ...

  9. zabbix客户端监控脚本shell

    zabbix客户端监控脚本shell #!/bin/sh sleep 3 zabbixdir=`pwd` zabbix_version=4.2.5 ###指定版本,最好和server端吻合版本,可以自 ...

随机推荐

  1. 关于七牛云存储配置服务器CNAME的问题

    以前的图片什么的都存放在七牛云(免费的那款)上,七牛相比OSS就是只能创建bucket但不能创建文件夹,这个令人很烦.最近七牛发公告说存储文件的测试域名30天后不能使用了,那我那些存储的图片的所有外链 ...

  2. 学到了林海峰,武沛齐讲的Day19 迭代细讲

    在家加1个月学了8day的课  出差6天看了8day的课..说明再忙也是可以挤挤多学习的. 广州出差最后两天没学习.一天做车,一天做公司的事...4天就过去了. 老师讲的包子和鸡蛋需求不好...讲的有 ...

  3. ACWing P372 棋盘覆盖 题解

    Analysis 这是一个经典的二分图问题,我们将图进行奇偶染色,注意边界条件的判断.再跑一遍匈牙利算法就行了,跟上一题很像. #include<iostream> #include< ...

  4. 010_Python3 字典

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:   d ...

  5. 三十三.mysqldump 实时增量备份 、innobackupex

    1.数据库备份与恢复 逻辑备份工具 mysqldump 使用mysql 恢复数据库   1.1备份MySQL服务器上的所有库 ]# mysqldump -u root -p123456 --all-d ...

  6. 监控ntp进程的

    !#/bin/bash ntp_num=$[`ps -ef|grep ntp|wc -l`-1] if [ $ntp_num == 1 ];then echo 0 else echo $ntp_num ...

  7. jQuery相关方法1

    一.设置某个元素的标签内容------.html()方法 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js& ...

  8. Matlab学习——求解微分方程(组)

    介绍: 1.在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的一阶导数,D2y 表示 y 关于自变量的二阶导数,依此类推.函数 dsolve 用来解决常微分方程(组)的求解问 ...

  9. JavaScript 取两位小数有效数字

    a=2.33332.3333a.toFixed(2)"2.33"

  10. dell如何安装Win10/Ubuntu双系统

    原文:https://www.cnblogs.com/askDing/p/10477345.html 测试环境: DELL PRECISION 7510: CPU:Intel Core i5-6300 ...