ASP.NET實現回調服務器的簡單方法.

在開發ASP.NET應用程序的過程中, 我們經常需要在不刷新頁面的情況下回調服務器的一些信息.人們喜歡用一些集成的的類庫來處理,其實,ASP.NET本身已以內置了服務器回調的信息.下面是一個簡單的例子:
要實現回調,服務器必須實現 ICallbackEventHandler  接口.
如下:
public partial class _Default : System.Web.UI.Page ,ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.ClientScript.GetCallbackEventReference(this, "","", "");
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("");
    }
     void ICallbackEventHandler.RaiseCallbackEvent(String eventArgument)
    {
    }
     string ICallbackEventHandler.GetCallbackResult()
    {
        return "Data from server...";
    }
}
方法:Page.ClientScript.GetCallbackEventReference(this, "","", "");是爲了能夠在頁面中導入回調時要使用的JS腳本.這裏只使用了最簡單的方法.目的只是爲了在頁面中導入JS腳本,沒有執行其它任何操作.在導入的JS腳本里有一個WebForm_DoCallback()方法,我們實現回調主要就是依靠這個方法來實現的.
下面是WebForm_DoCallback()方法的原形:

function WebForm_DoCallback(eventTarget,eventArgument, eventCallback, 
context, errorCallback, useAsync);

eventTarget:指回調事件所指向的對象,一般使用:"__Page"來代替.
eventArgument:指回調事件使用的參數,這個參數一定要是字符串類型的.如果要傳遞對象的話,可以把對象轉換成
字符串或其它可以還原爲對象的字符串.這個參數會發送到服務器上,由上面的類中的方法:
RaiseCallbackEvent(String eventArgument)所接收,即在服務器上,我們使用
RaiseCallbackEvent(String eventArgument)的參數就是客戶端上傳的參數.
eventCallback:指當服務器事件執行完成後,會調用eventCallback參數所指向的方法.這個方法由兩個參數.一般
是這樣:function callbackEvent(arg,context){......}.這裏,第一個參數是由服務器上的方法
GetCallbackResult()所返回的字符串.也必須是字符串類型的數據.第二個參數是我們回調
服務器時WebForm_DoCallback()方法中的context參數,它沒有上傳到服務器,而是
在客戶端傳送的,雖然它是字符串類型,但實際上它可以是任何javascript支持的數據類型.
如數組,對象等等.
下面是一段客戶端代碼:實現簡單的回調.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無標題頁</title>
<script type="text/javascript">
function DoCallBack(arg,evt,context)
{
WebForm_DoCallback("__Page",arg,evt,context,null,false);
}
function btnCallback(arg,context)
{
DoCallBack(arg,this.callbackEvent,context);
 }       
functioncallbackEvent(arg,context)
        {
            alert(arg + context);
}
</script>
</head>
<body>
<form id="form1" runat="server"></form>
<input type="button" value="Callback" onclick="btnCallback(1, 'Message')"/>
</body>
</html>
在這裏我對WebForm_DoCallback進行了一下簡單的封裝,方面直接調用回調的方法.需要注意的是:我們要實現回調的話,
在aspx頁面中必須有一個運行在服務器上的form否則的話,服務器是不會在客戶端的頁面上導出實現回調
功能的腳本的.






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章