使用Page.ClientScript.RegisterClientScriptBlock

RegisterClientScriptBlock方法可以把一个JavaScript函数放在页面的顶部。这说明,该脚本用于启动浏览器中的页面。它的用法如下所示:

代码

<%@ Page Language="VB" %>  
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As_System.EventArgs)
Dim myScript As String = "function AlertHello() { alert('Hello_  ASP.NET'); }"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(),_ "MyScript",myScript, True)
End Sub 
</script>  
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server"> 
<title>Adding JavaScript</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" Runat="server" Text="Button" OnClientClick="AlertHello()" />
</div>
</form>
</body>
</html>

这里把JavaScript函数AlertHello创建为一个字符串myScript。接着使用Page.Client Script.Register ClientScriptBlock方法,将脚本放在页面中。RegisterClientScriptBlock方法的两个结构如下:

RegisterClientScriptBlock(type, key, script)

RegisterClientScriptBlock(type, key, script, script tag specification)

上面的示例指定了类型Me.GetType、键、要包含的脚本,接着是一个设置为True的布尔值,所以.NET会自动用<script>标记把脚本放在ASP.NET页面上。运行该页面时,可以查看页面的源代码,如下所示:

代码

<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>Adding JavaScript
</title></head>
<body>
<form method="post" action="JavaScriptPage.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE"  value="/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=" />
</div>
<script type="text/javascript">
<!--  function AlertHello() { alert('Hello ASP.NET'); }// --> 
</script>
<div>
<input type="submit" name="Button1" value="Button" onclick="AlertHello();" id="Button1" />
</div>
</form>
</body>
</html> 

从这段代码中可以看出,指定的脚本放在ASP.NET页面的页面代码之前。不仅包含<script>标记,还在脚本的外部添加了相应的注释标记(所以旧浏览器不会崩溃)。

使用Page.ClientScript.RegisterStartupScript

RegisterStartupScript方法类似于RegisterClientScriptBlock方法,主要区别是RegisterStartup Script方法把脚本放在ASP.NET页面的底部,而不是顶部。实际上,RegisterStartupScript方法与RegisterClientScriptBlock方法采用相同的结构:

RegisterStartupScript(type, key, script)

RegisterStartupScript(type, key, script, script tag specification)

是什么使脚本在页面的不同地方注册?其实区别很多。如果JavaScript代码处理的是页面上的一个控件,则大多数情况下应使用RegisterStartupScript方法,而不是RegisterClientScript Block方法。例如,使用下面的代码创建一个页面,其中包含一个简单的<asp:TextBox>控件,其默认值是Hello ASP.NET:

<asp:TextBox ID="TextBox1" Runat="server">Hello ASP.NET</asp:TextBox> 接着,使用RegisterClientScriptBlock方法把一个脚本放在页面上,以利用TextBox1控件中的值:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

  Dim myScript As String = "alert(document.forms[0]['TextBox1'].value);"

  Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "myKey", _ myScript,True)

End Sub

运行这个页面,会生成JavaScript错误。

发生错误是因为JavaScript函数在文本框控件放在屏幕上之前就引发了。因此,JavaScript函数找不到TextBox1,页面就会抛出一个错误。现在试试RegisterStartupScript方法:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

Dim myScript As String = "alert(document.forms[0]['TextBox1'].value);"

Page.ClientScript.RegisterStartupScript(Me.GetType(), "myKey", _myScript, True)

End Sub 这个方法把JavaScript函数放在ASP.NET页面的底部,所以JavaScript函数执行时,会找到TextBox1元素,按照期望的那样执行。

转载于:https://www.cnblogs.com/Fskjb/archive/2010/03/24/1694194.html

asp.net中注册脚本的两个方法相关推荐

  1. 关天asp.net ajax beta中在updatepnael中注册脚本的解决方案

    最近也在看一些asp.net ajax 的资料,在网上看到很多人都在问如何在updatepanel中注册脚本,我也试了一下,不过总是不行,就看了好多资料,最后才知道自己没有完全理解 ScriptMan ...

  2. [转帖]ASP.NET中常用的优化性能的方法

    ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1.       数据库访问性能优化     数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...

  3. html怎么样取jsp中的路径,jsp中获得路径的两种方法和获得url路径的方法(推荐)

    是解决相对路径的问题,可返回站点的根路径. //这样获得的是绝对路径 //这样获得的是相对路径 能够更有效的防治连接的失效. request.getContextPath()得到的是项目的名字,如果项 ...

  4. python字典取值_python 字典中取值的两种方法小结

    python 字典中取值的两种方法小结 如下所示: a={'name':'tony','sex':'male'} 获得name的值的方式有两种 print a['name'],type(a['name ...

  5. jQuery插件:Validation中success和submitHandler两个方法的区别

    jQuery插件:Validation中success和submitHandler两个方法的区别 http://www.mzwu.com/article.asp?id=3357 先执行onsubmit ...

  6. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  7. python右对齐格式化输出_Python中格式化输出的两种方法介绍

    本篇文章给大家带来的内容是关于Python中格式化输出的两种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方式一:使用占位符 % 常用占位符:% s (s = string ...

  8. php 实现类似asp.net中的datagridview效果,asp.net中使用DatagridView的增删改方法具体实现...

    asp.net中使用DatagridView的增删改方法具体实现 default.aspx 页面: 代码如下: onpageindexchanging="GridView1_PageInde ...

  9. DLL中资源切换的两种方法

    DLL中资源切换的两种方法 方法1 AFX_MANAGE_STATE(AfxGetAppModuleState());                // MFC扩展dll 或 AFX_MANAGE_ ...

最新文章

  1. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!
  2. Linux 内核同步(二):自旋锁(Spinlock)
  3. 当推荐系统遇上多模态Embedding
  4. (转)Predictive learning vs. representation learning 预测学习 与 表示学习
  5. SharePoint2007安装图文详解三:安装SqlServer2005
  6. 剑指offer面试题42. 连续子数组的最大和(动态规划)
  7. c语言实现数据结构中的链式表
  8. MFC多文档开发记录
  9. SpringBoot+Vue项目校园闲置物品交易系统
  10. Sqlite字段长度填坑
  11. MMORPG传奇类手游《空空西游》完整源码(客户端cocos2d-js+服务端pomelo+cocosStudio工程+搭建教程)
  12. 手机闪存速度排行_手机闪存性能排行
  13. 神威超级计算机机械知识,神威超级计算机的计算能力有多强?
  14. Android 局域网扫描
  15. 藏在今日头条、喜马拉雅背后的神秘天使:龚挺 | 捕捉隐秘猎手
  16. 我与小娜(20):去LIGO,探秘光子接力赛
  17. 定期存款计算器_定期存款预测
  18. Live555 —— vs2017编译“Live555 Live555 Media Server“源码
  19. 服务器系统事件1014,事件ID1014
  20. 微服务架构:Nacos本地缓存 PK 微服务优雅下线

热门文章

  1. oracle估算数据增长,如何估算oracle 数据库,数据库对象历史增长情况
  2. [pthon]模块 time
  3. oracle通过闪回查询表的更改记录
  4. linux命令——locate
  5. 如何用开源经历为你的简历增加光彩
  6. Parallels中使用加密狗读取文件出现错误
  7. day2-Samba
  8. 内核态文件操作【转】
  9. 网络测试利器netperf安装和使用
  10. gim-实时通讯框架