zoukankan      html  css  js  c++  java
  • 服务器控件之二

    在ASPNET页面上包含自定义的JavaScript函数,有两种方式:第一种方式是把Javascript直接应用于页面上的控件。

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body onload="javascript:document.forms[0]['tb1'].value=Date();">
        <form id="form1" runat="server">
        <div>
        <asp:TextBox ID="tb1" runat="server" Width="300"></asp:TextBox>
        </div>
        </form>
    </body>
    </html> 
     

    即使使用的是Web服务器控件(标准TextBox服务器控件),仍能使用JavaScript在<body>元素的Onload属性中访问这个控件。通过使用服务器控件的Id属性,onload属性能指向特定的服务器控件。采用这个方法,还可以在页面上访问其他服务器控件。

    ASPNET使用Page.ClientScript属性在页面上注册和使用JavaScript函数。

    这里介绍3个比较有用的方法(更多的方法和属性可以通过ClientScript对象来获得

    1、RegisterClientScirptBlock方法可以把JavaScript函数放在页面的顶部。(该脚本用于在浏览器中启动页面)

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <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" Text="AlertHello" runat="server" OnClientClick="AlertHello()" />
        </div>
        </form>
    </body>
    </html> 


    使用Page.ClientScript.RegisterClientScriptBlock方法注册页面上的脚本。这样,.NET就自动把脚本放在页面上的<script>标记中。

    2、Page.ClientScript.RegisterStartupScript

    它与RegisterClientScriptBlock方法的区别不大,最大的区别在于它吧脚本放在ASPNET页面的底部,而不是顶部。

    大多数情况下,应使用RegisterStartupScript方法,而不是RegisterClientScriptBlock方法

    如果使用RegisterClientScriptBlock,并且在Javascript引用控件值,运行这个页面,就会产生一个Javascript错误。

    出错的原因是Javascript函数在文本框被放置到屏幕之前就已触发。所有Javascript函数没有找到TextBox1,导致页面抛出一个错误。

    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        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
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:TextBox ID="textbox1" runat="server" >张继科,有你的节拍,全世界都是我们的主场!</asp:TextBox>
        
        <asp:Button ID ="button1" runat="server" OnClientClick="mykey" Text="点我"/>
        </div>
        </form>
    </body>
    </html>

    这个方法把Javascript函数放在 页面的底部,所以实际启动时,就会找到textbox1元素,并按照希望的那样操作。

    3、Page.ClientScript.RegisterClientScriptInclude

    把Javascript放在js文件中,是最好的方式(因为很容易把对javascript的修改应用于整个应用程序)。

    使用RegisterClientScriptInclude方法可以在ASPNET页面上注册脚本文件

    Dim myScript As String=”myJavaScriptCode.js”
    Page.ClientScript.RegisterClientScriptInclude(“myKey”,myScript)

    这会在ASPNET页面上创建如下代码:

    <script src=”myJavaScriptCode.js” type=”text/javascript”></script>

    ASPNET 3.5包含客户端回调功能,可以获取页面值,并把它们填充到已生成的页面上,而无须重新生成页面。这个功能是在ASPNET 2.0中引入,不需要进行整个回送循环,就可以修改页面上的值。也就是说,在更新页面时可以不重新绘制全部页面。使用回调功能,需要了解一些Javascript知识。

    典型ASPNET页面的当前回送功能

    在页面上触发一个页面事件,处理典型的回送内容时,要进行许多操作。比如:页面事件触发回送作为Post请求、初始化、加载状态、处理回送数据、加载、回送事件、保存状态、预显示、显示、卸载

    正常的回送情况下,某个事件触发一个要发送给Web服务器的HTTP Post请求。该事件会把Post请求发送给Web服务器,Web服务器再使用IPostbackEventHandler处理该请求,并通过一系列页面事件运行该请求。这些事件包括加载状态(在页面的视图状态中)、处理数据、处理回送事件,最后是显示所用浏览器解释的页面。该过程会在浏览器中重新加载页面,使页面上部出现闪烁现象并重新排列

    使用新的回调功能,事件的发生会把该事件传送给脚本事件处理程序(一个Javascript函数),该处理程序给Web服务器传送一个要处理的异步请求,ICallBackEventHandler通过一个类似于回送中使用的管道来运行请求,加载了信息后,结果就返回给脚本回调对象。加载了信息后,结果就返回给脚本回调对象,然后,脚本代码使用Javascript的功能把这些数据放在Web页面上,而无须刷新页面。

     

  • 相关阅读:
    pgspider timescale 扩展docker 镜像
    pgspider perl 语言扩展
    postgresql_anonymizer 方便的数据脱敏扩展
    pgspider jsonb_deep_sum 扩展docker 镜像以及简单试用
    pgspider pgddl 扩展doker 镜像以及试用
    pgspider wal2json doker 镜像
    pgspider Citus节点数据移动操作
    pgspider Citus worker 账户密码问题
    pgspider Citu 副本以及节点移除简单学习
    Citus 官方docker demo 中membership-manager原理简单说明
  • 原文地址:https://www.cnblogs.com/lizunicon/p/2453201.html
Copyright © 2011-2022 走看看