利用ICallbackEventHandle实现类似AJAX的无刷新页面
点击次数:20 次 发布日期:2008-11-26 11:42:08 作者:源代码网
|
源代码网推荐 ------ 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的无刷新页面,而且实现起来十分简单。 源代码网推荐 源代码网推荐 http://pyw0818.cnblogs.com/archive/2006/05/30/413416.html 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
