RegisterClientScriptBlock与RegisterStartupScript区别
RegisterClientScriptBlock与RegisterStartupScript区别
RegisterClientScriptBlock与RegisterStartupScript区别一、前端输出脚本有以下三种方法
方法1,使用Response.Write
这种方法会把JS代码写在页面的最顶部(<html>的前面):
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('JS代码');</script>");
方法2,使用RegisterStartupScript
这种方法会把JS代码嵌入在页面的底部、表单的最后 (</form>前面),适用于要在页面控件加载完成后运行的JS代码 :
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(),"clientScript"))
page.ClientScript.RegisterStartupScript(page.GetType(), "clientScript", "<script language=javascript>alert('JS代码');</script>");
方法3,使用RegisterClientScriptBlock
这种方法会把JS代码嵌入在页面的顶部、表单的最前 (<form>后面),适用于要在控件加载前执行的JS代码,类似于上面的Response.Write方式 :
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
if (!page.ClientScript.IsClientScriptBlockRegistered(page.GetType(),"clientScript"))
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "clientScript", "<script language=javascript>alert('JS代码');</script>");
二、RegisterClientScriptBlock 与 RegisterStartupScript的构造函数
RegisterStartupScript(key, script)
RegisterClientScriptBlock(key, script)
RegisterClientScriptBlock (type,key,script,script tag specification)
RegisterStartupScript (type,key,script,script tag specification)
三、RegisterClientScriptBlock 与 RegisterStartupScript的区别
1、这两个方法唯一的不同之处在于向“何处”注册脚本块。
RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。
RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面。
2、例如
(1).使用Page.ClientScript.RegisterClientScriptBlock
代码
<%@ Page Language=”C#” %>
<script runat=”server”>
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”function AlertHello() { alert(‘Hello ASP.NET’); }”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
“MyScript”, myScript, true);
}
</script>
运行结果如下:
<html>
<head><title>
Adding JavaScript
</title></head>
<body>
<form method=”post” action=”JavaScriptPage。aspx” id="”form1”">
<li>
<input type=”hidden” name=”__VIEWSTATE”
value=”/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=” />
</li>
<script type=”text/javascript”>
<!--
function AlertHello() { alert(‘Hello ASP.NET’); }// -->
</script>
<li>
<input type=”submit” name=”Button1” value=”Button” onclick=”AlertHello();”
id="”Button1”" />
</li>
</form>
</body>
</html>
(2).使用Page.ClientScript.RegisterStartupScript
RegisterStartupScript 方法与RegisterClientScriptBlock方法最大的不同是:RegisterStartupScript 把script放置在 ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部。
如果你的页面中有如下代码:
<asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “MyScript”, myScript, true);
}
此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。
应该为:
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterStartupScript(this.GetType(), “MyScript”, myScript, true);
}
这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。
- asp.net后台输出js脚本
- ASP.NET中Web.config文件的配置
- asp.net小数点四舍五入
- ASP.NET Web API中参数的传递
- ASP.NET List 集合操作
- Asp.Net中索引器的用法
- ASP.NET参数化查询
- asp.net使用swfupload上传
- ASP.NET抓取网页内容
- asp.net中split的用法
- asp.net lambda表达式
- ASP.NET泛型约束
- ASP.NET中Server对象的用法
- ASP.NET的Random随机数
- asp.net去除字符串中html标签
- ASP.NET方法重载
- 老弄堂里的市井味道(老弄堂里的市井味道)
- 小米音乐可绑定QQ音乐, QQ音乐 真的会消失在小米的设备上吗(小米音乐可绑定QQ音乐)
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
- 手机QQ与小米路由器在一起 明天揭晓,敬请期待(手机QQ与小米路由器在一起)
- 小米音乐与 QQ 音乐合作,便捷迁移会员(小米音乐与QQ音乐合作)
- 小米推出米兔儿童电话手表奥特曼版,799 元,支持微信 QQ(小米推出米兔儿童电话手表奥特曼版)
热门推荐
- javascript 数据分析(利用JavaScript差集实现一个对比小工具)
- mysql将字符串转换成整数(MYSQL字符串强转的方法示例)
- mysql必背知识点高级(MySQL 8.0 Online DDL快速加列的相关总结)
- laravel关于视图使用语法(在laravel中使用with实现动态添加where条件)
- docker redis安装配置(在docker中部署并启动redis的方法)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- laravel6后台管理系统(基于laravel-admin 后台 列表标签背景的使用方法)
- vue找不到水印设置(Vue使用自定义指令实现页面底部加水印)
- php集成支付(ThinkPHP框架整合微信支付之刷卡模式图文详解)
- phpstudymysql数据库启动不了(phpstudy mysql启动不了的解决方法)