Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说
在 .aspx.cs页面中,输入这四个东西:Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager,均会出提示,表示它们均可用,那么它们有什么区别呢?
Page.ClientScript 与 ClientScript 的关系
这二者实际上是一个东西,后者只是省略了 Page。都是获取用于管理脚本、注册脚本和向页添加脚本的ClientScriptManager 对象。
ScriptManager 与 ClientScriptManager 区别
他们的名称空间均是 System.Web.UI。
- ScriptManager 是用于管理 AJAX 脚本库和脚本文件;
- ClientScriptManager 用于管理普通的 script,就比如向客户端输出一个<script>alert("");</script>。
ClientScript 与 ClientScriptManager 区别
ClientScript 是 ClientScriptManager 的对象,ClientScriptManager是类。
Page.RegisterClientScriptBlock 与Page.RegisterStartupScript(也可省略 Page)
微软已经不推荐这样写,而应该是 ClientScript.RegisterClientScriptBlock 或
ClientScript.RegisterStartupScript。
RegisterClientScriptBlock、RegisterStartupScript 都是注册一个脚本块。
ClientScript.RegisterStartupScript(this.GetType(), "script1","alert(2);", true);
它们的区别就是 RegisterClientScriptBlock 是注册在 body 最前面,而RegisterStartupScript 是注册在 body 最后面。
为什么这样呢?一些优化性能的文章说,script 要放在 body 最后加载,但根据一些应用的实际情况,必须得在最初加载script,这时就得用 RegisterClientScriptBlock 了。
说说他们的第二个参数 key。
第二个参数 key 是用来避免重复注册的,上面代码,他们的 key 都是script1,但不会冲突,因为方法名称都不相同。
下面代码都是 RegisterStartupScript,第二句就不会有任何输出,因为之前已经注册过一个 script1的脚本了。
ClientScript.RegisterStartupScript(this.GetType(), "script1","alert(3);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script2","alert(4);", true);
虽然,Response.Write 可以输出 JavaScript,但输出的内容是在<html>之前,这会导致一些问题,比如样式表失效,甚至会导致一些脆弱的浏览器发生错误。
ClientScript 则可以方便地管理 JavaScript,应该说ClientScript.RegisterClientScriptBlock 与ClientScript.RegisterStartupScript 只有一点区别,那就是RegisterClientScriptBlock 将脚本代码写在<form> 之后,而 RegisterStartupScript将代码写在 </form>(注意是结束标签)之前。
public void RegisterClientScriptBlock(Type type, string key, stringscript, bool addScriptTags)
public void RegisterStartupScript(Type type, string key, stringscript)
public void RegisterStartupScript(Type type, string key, stringscript, bool addScriptTags)
可以看出二者语法相同。
- type 要注册的启动脚本的类型。
- key 要注册的启动脚本的键,也就是你自己给这段脚本起的名字。相同 key的脚本被当作是重复的,对于这样的脚本只输出最先注册的,ClientScriptBlock 和 StartupScript 中的 key相同不算是重复的。
- script 脚本代码。
- addScriptTags 是否添加<script> 标签,如果脚本代码中不含<script> 标签,则应该指定该值为 true,若不指定该值,会被当作false 对待。
ClientScript.RegisterClientScriptBlock(this.GetType(), "key1",@"function Go(){ alert('');}", true);
ClientScript.RegisterStartupScript(this.GetType(), "key1", "Go();",true);
Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说的更多相关文章
- 网页弹出框ClientScript,ScriptManager
网页调用客户端弹出框 this.ClientScript.RegisterStartupScript(this.GetType(), "message", "<sc ...
- ClientScriptManager 和 ScriptManager RegisterClientScriptBlock
ClientScriptManager.RegisterOnSubmitStatement(Type, String, String) Method Registers an OnSubmit sta ...
- ASP.NET后台输出js大全,页面顶部、form表单中前面与后面、和UpdatePanel(ScriptManager、AJAX)输出JS
Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptB ...
- 向Page对象注册脚本
在madn上ClientScriptManager 类的示例: <%@ Page Language="C#"%> <!DOCTYPE html PUBLIC &q ...
- 弹出消息对话框ScriptManager
//直接调用WebMessageBox方法 #region 弹出消息对话框 /// <summary> /// 弹出消息对话框 /// </summary> /// <p ...
- ASP.NET CS文件中输出JavaScript脚本
ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...
- ASP.NET 3.5控件和组件开发技术之客户端回发/回调揭密
本文摘录自<纵向切入ASP.NET 3.5控件和组件开发技术>. 对于服务端控件元素,比如ASP.NET的Button标准服务端控件在提交时可以自动把请求发送到服务端处理,这样的控件我们不 ...
- mojoportal中使用jquey的插件
以前在mojo中使用jquery的插件,都是把插件的文件内容直接写到了相关的模块中,这样的问题是不整洁,一大串代码. 如果直接在layout.master中引入插件文件,或者在自定义模块中引入插件文件 ...
- ASP.NET 给作为隐藏域的TextBox赋值之后提交表单,无响应?
操作步骤: 给页面隐藏TextBox赋值,然后触发ASP.NET change事件,调用ASP.NET后台方法,调用后执行客户端脚本this.RegisterClientScriptBlock(Dat ...
随机推荐
- PL/SQL存储过程
一.概述 过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储于数据库中. 并通过输入.输出和输入输出参数与其调用者交换信息.唯一区别是函数总向调用者返回数据. 二.存储过程详解 ...
- 基于JS的高级脚本语言 Sara
Sara-基于JS的高级脚本语言 欢迎使用Sara,Sara是一款基于JavaScript的全新的高级脚本语言! Sara不像我们工作室上一款编程语言作品-Ginit一样,他属于更高级的语言 Sara ...
- jquery模仿淘宝星星打分
今天做论坛页面有星星评分功能,以下是代码.用的时候引入jquery <span> <ul class="hs_df_xx"> <li><i ...
- 异常:ORA-01013: 用户请求取消当前的操作
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/bnmnba/article/detail ...
- jQuery相关方法1
一.设置某个元素的标签内容------.html()方法 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js& ...
- 心跳(纯代码制作心形,animation动画)
思路:利用两个长方形(比例是2:3 | 3:2)可以合成心形,然后利用动画,缩放大小实现心跳(纯代码),效果如下: <body> <div></div> </ ...
- 爬虫(五):PyQuery的使用
一:简介 PyQuery库是jQuery的Python实现,可以用于解析HTML网页内容,是一个非常强大又灵活的网页解析库. -->官方文档地址 -->jQuery参考文档 二:初始化 初 ...
- 配置Notepad++
Notepad++配置 1.自动换行 视图 - 自动换行 2.隐藏工具栏 设置 - 首选项... > 常用 > 工具栏 - 隐藏 3.隐藏菜单栏 设置 - 首选项... > 常用 & ...
- 1、Kfaka 部署
一.使用Kfaka自带的zookeeper服务. 1.下载Kafka,下载地址: http://kafka.apache.org/downloads 2.区分Kfaka版本: Scala 2.12 - ...
- 2018-2019-2 20165234 《网络对抗技术》 Exp9 Web安全基础
Exp9 Web安全基础 一. 实践内容 1. 安装JDK.Webgoat 2. SQL注入攻击 数字型注入(Numeric SQL Injection) 日志欺骗(Log Spoofing) 字符串 ...