asp.net中注册脚本的两个方法

使用Page.ClientScript.RegisterClientScriptBlock

 

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

 

ExpandedBlockStart.gif 代码
<% @ 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页面上。运行该页面时,可以查看页面的源代码,如下所示:

 

ExpandedBlockStart.gif 代码
< 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值