使用ClientScriptManager向客户端注册脚本
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向客户端注册脚本的更多相关文章
- ClientScriptManager与ScriptManager向客户端注册脚本的区别
使用ClientScriptManager向客户端注册脚本 ClientScriptManager在非异步(就是说非AJAX)环境下使用的.如果要在异步环境下注册脚本应该使用ScriptManager ...
- 向Page对象注册脚本
在madn上ClientScriptManager 类的示例: <%@ Page Language="C#"%> <!DOCTYPE html PUBLIC &q ...
- 第8章 动态客户端注册 - IdentityModel 中文文档(v1.0.0)
OpenID Connect动态客户端注册的客户端库是作为HttpClient扩展方法提供的. 以下代码发送注册请求: var client = new HttpClient(); var respo ...
- Eureka客户端注册多网卡下IP选择问题
在使用Spring Cloud多人协作开发时有一个场景:我本机启动了Eureka注册中心,其他人机器需要将服务注册到我本机的Eureka.(服务端和客户端在不同机器上) 这时出现了一个问题:服务成功注 ...
- 记一次eureka客户端注册失败的问题
最近老大给了一台新服务器,做测试用,从装软件开始,到把整个环境搭起来,因为之前没有完成搭过,所以费了几天时间,最后总算是成功跑起来了.昨天早上来更新下项目,在测试服务器上重新发布了一下,结果发现服务注 ...
- 使用TortoiseSVN的客户端钩子脚本触发Jenkins构建
我们项目在开发过程中使用了Jenkins构建Windows版本,为了通过自动触发使构建的版本保持最新,可以采用的方法如下: Jenkins Poll SCM:设置Jenkins定时检查变更,在SVN版 ...
- Watcher详解 工作机制, Watcher客户端注册、Watcher 服务端注册
Watcher详解.接口 在 ZooKeeper 中, 接口类 Watcher 用于表示一个标注你的事件处理器,其定义了事件通知相关的逻辑,包含 KeeperState 和 EventType 两个枚 ...
- 客户端注册Cannot execute request on any known server解决
在对eureka注册中心服务端添加安全验证后,新版本springcloud出现一个问题就是,在客户端注册到服务中心时报了一个错:Cannot execute request on any known ...
- zabbix客户端监控脚本shell
zabbix客户端监控脚本shell #!/bin/sh sleep 3 zabbixdir=`pwd` zabbix_version=4.2.5 ###指定版本,最好和server端吻合版本,可以自 ...
随机推荐
- machine learning(10) -- classification:logistic regression cost function 和 使用 gradient descent to minimize cost function
logistic regression cost function(single example) 图像分布 logistic regression cost function(m examples) ...
- WebStorm 安装
官方下载地址:https://www.jetbrains.com/webstorm/ 下载 安装 等待.......... 安装完成........................ 开始使用(第一次 ...
- vue 项目总结 知识点补充
1.页面加载后自动执行函数 2.向后端请求数据方法 2-1 :axios 的安装使用 2-2 在组件中使用 2-3 发送请求 2-4 接收数据后渲染 2-5 后端数据渲染 2-6 解决跨域问题 任务 ...
- Jmeter逻辑控制之if控制器
一.背景 在实际工作中,当使用Jmeter做性能脚本或者接口脚本时,有可能会遇到需要对不同的条件做不同的操作,基于这种诉求,在Jmeter中可使用if控制器来实现 二.实际操作 逻辑控制器位置: 在线 ...
- 关于 $.proxy(fn,context,arg) 方法
<!-- $.proxy(fn,this,agrument); proxy 代理 思考做酒的代理商argument就是代理商 把fn所在的作用域对象的参数/属性 代理给fn执行. fn: 要被调 ...
- url的主要功能是什么
URL是Uniform Resource Loctor的缩写 URL作用:通过URL可以到达任何一个地方寻找需要的东西,比如文件.数据库.图像.新闻组等等,可以这样说,URL是Internet上的地址 ...
- 洛谷 P1309 瑞士轮 题解
每日一题 day4 打卡 Analysis 暴力+快排(其实是归并排序) 一开始天真的以为sort能过,结果光荣TLE,由于每次只更改相邻的元素,于是善于处理随机数的快排就会浪费很多时间.于是就想到归 ...
- bzoj 4922: [Lydsy1706月赛]Karp-de-Chant Number 贪心+dp
题意:给定 $n$ 个括号序,让你从中选取一些括号序按照任意顺序拼接,最终生成一个合法的括号序列,求这个合法序列长度最大值. 题解:假设括号序列相对顺序固定,而我们要做的只是判断选还是不选的话可以转化 ...
- C++构造函数的default和delete
C++11中,当类中含有不能默认初始化的成员变量时,可以禁止默认构造函数的生成, myClass()=delete;//表示删除默认构造函数 myClass()=default;//表示默认存在构造函 ...
- NetworkX系列教程(7)-对graph进行分析
小书匠Graph图论 graph构建完成后,对graph的连通等属性进行分析. 目录: 8.对图进行分析 8.1连通子图 8.2弱联通 8.3强连通 8.4子图 8.5条件过滤 注意:如果代码出现找不 ...