zoukankan      html  css  js  c++  java
  • 利用ICallbackEventHandle实现类似AJAX的无刷新页面

    先看MSDN Library 2005上的这个例子!
    ------ ClientCallback.aspx ------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientCallback.aspx.cs" ­ Inherits="ClientCallback" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/­ xhtml11.dtd">

    <html xmlns="http://www.w3.org/1999/xhtm­ l" >
        
    <head id="Head1" runat="server">
            
    <title>Callback Test</title>
            
    <script type="text/javascript">
            function ReceiveServerData(receivedStr, context)
            
    {
                alert(receivedStr);
            }

            
    </script>
        
    </head>
            
    <body>
              
    <form id="form1" runat="server">
                
    <input type="button" value="Callback" onclick="CallServer('argument', 'context')"/><br />
              
    </form>
        
    </body>
    </html>
    -------- ClientCallbacp.aspx.cs  -----------
    // ClientCallback.aspx.cs 
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;­ 
    using System.Web.UI.HtmlControls;

    public partial class ClientCallback : System.Web.UI.Page, System.Web.UI.ICallbackEventHandle­ r
    {

        
    void Page_Load(object sender, EventArgs e)
        
    {
            ClientScriptManager cm 
    = Page.ClientScript;
            String cbReference 
    = cm.GetCallbackEventReference(this,­ "arg""ReceiveServerData""");
            String callbackScript 
    = "function CallServer(arg, context) {" + cbReference + "; }";
            cm.RegisterClientScriptBlock(
    this.­ GetType(), "CallServer", callbackScript, true);
        }


        
    private string returnStr;
        
    //function called by client, executed on server
        public void RaiseCallbackEvent(String eventArgument)    
        
    {
            
    //do something with return argument
            returnStr = eventArgument.ToUpper();
            
    return;
        }

        
        
    //function that sends result?
        public string GetCallbackResult()
        
    {
            
    return returnStr;
        }

    }

    客户端用ReceiveServerData接收服务器返回的数据,
    <script type="text/javascript">
            function ReceiveServerData(receivedStr, context)
            {
                alert(receivedStr);
            }
     </script>


    使用CallServer('argument', 'context')传递数据到服务器。

    客户端ok了,接下来是服务器端,
    实现ICallbackEventHandle­ 接口,
    private string returnStr;
     public void RaiseCallbackEvent(String eventArgument)    
        {
            returnStr = eventArgument.ToUpper();
            return;
        }
        
    public string GetCallbackResult()
        {
            return returnStr;
        }


    最后,将客户端方法和服务器端的方法关联起来,在Page_Load中实现,
    ClientScriptManager cm = Page.ClientScript;
     String cbReference = cm.GetCallbackEventReference(this,­ "arg", "ReceiveServerData", "");
    String callbackScript = "function CallServer(arg, context) {" + cbReference + "; }";
     cm.RegisterClientScriptBlock(this.­ GetType(), "CallServer", callbackScript, true);


    大功告成!

    这种方法也能达到类似ajax的无刷新页面,而且实现起来十分简单。
  • 相关阅读:
    BeautifulSoup
    requests
    安装xpath helper
    取消搜狗输入法的快捷键
    numpy初识 old
    Jupyter Notebook 快捷键
    安装numpy、matplotlib
    JavaScript 继承 -JavaScript高级程序设计
    mac /windows
    unicode 地址
  • 原文地址:https://www.cnblogs.com/pyw0818/p/413416.html
Copyright © 2011-2022 走看看