ClientScriptManager 管理客户端脚本
ClientScriptManager 类用于管理客户端脚本并将它们添加到 Web 应用程序中。可以从 Page 对象的 ClientScript 属性获取对 ClientScriptManager 类的引用。
通过在网页的 HTML 标记中包含脚本,可以声明方式向网页添加客户端脚本。然而,有些情况下需要动态添加客户端脚本。若要动态添加脚本,根据您想添加脚本的时间及方式,使用 RegisterClientScriptBlock 方法、RegisterClientScriptInclude 方法、RegisterStartupScript 方法或 RegisterOnSubmitStatement 方法。
ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本。具有相同的键和类型的脚本被视为重复脚本。使用脚本类型有助于避免混淆可能用在页中的来自不同用户控件的相似脚本。
懒得翻MSDN的人还是有的,所有就将ClientScriptManager的成员方法帖出来:
名称 |
说明 |
|
Equals |
确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) |
|
Finalize |
允许 Object 在"垃圾回收"回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
|
已重载。 获取一个对客户端函数的引用;调用该函数时,将启动一个对服务器事件的客户端回调。 |
||
GetHashCode |
用作特定类型的哈希函数。 (继承自 Object。) |
|
已重载。 获取一个引用,并将 javascript: 追加到引用的开始处,用于在客户端事件中回发到服务器。 |
||
已重载。 返回一个可以在客户端事件中使用的字符串,以便回发到服务器。 |
||
GetType |
获取当前实例的 Type。 (继承自 Object。) |
|
获取对程序集内资源的 URL 引用。 |
||
已重载。 确定 Page 对象是否注册了客户端脚本块。 |
||
已重载。 确定 Page 对象是否注册了客户端脚本包含。 |
||
已重载。 确定 Page 对象是否注册了 OnSubmit 语句。 |
||
已重载。 确定 Page 对象是否注册了启动脚本。 |
||
MemberwiseClone |
创建当前 Object 的浅表副本。 (继承自 Object。) |
|
使用数组名称和数组值向 Page 对象注册 JavaScript 数组声明。 |
||
已重载。 向 Page 对象注册客户端脚本。 |
||
已重载。 向 Page 对象注册客户端脚本包含。 |
||
使用类型和资源名向 Page 对象注册客户端脚本资源。 |
||
已重载。 将名称/值对注册为指定控件的自定义 (expando) 属性。 |
||
已重载。 为验证注册事件引用。 |
||
使用类型、键和脚本文本向 Page 对象注册 OnSubmit 语句。该语句在提交 HtmlForm 时执行。 |
||
已重载。 向 Page 对象注册启动脚本。 |
||
ToString |
返回表示当前 Object 的 String。 (继承自 Object。) |
|
已重载。 验证客户端事件。 |
下面来看一个示例:
<%@ Page Language="C#"%>
<!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>
<script runat="server">
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
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
</body>
</html>
生成的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>
PS:示例代码是借用JieNet的


出处:http://QLeelulu.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述