zoukankan      html  css  js  c++  java
  • asp.net中注册脚本的两个方法

    使用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元素,按照期望的那样执行。

       

  • 相关阅读:
    eri
    elasticsearch集群搜集nginx日志
    linux 常用
    如何清理Docker占用的磁盘空间?
    ubuntu1804 64位 apt源
    postgresql笔记
    web前端——02 body标签中相关标签
    web前端——01 html介绍和head标签
    python数据库——pymysql模块的使用
    MySql数据库——可视化工具Navicat的使用
  • 原文地址:https://www.cnblogs.com/Fskjb/p/1694194.html
Copyright © 2011-2022 走看看