2008-09-29 143 views
1

我有一個ASP.NET 3.5的WebForm,利用框架Page.ClientScript.GetCallbackEventReference()方法,我希望一些調用是同步的。現在GetCallbackEventReference不能同步工作

,該文件說,第五個參數(見下文)控制這一點。具體來說,當你通過「假」它應該是一個非異步調用。然而,不管它是真的還是假的,但它仍然異步處理呼叫。

Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context",false); 

是否有解決此問題的方法或者我做錯了什麼?

回答

1

ASPX頁面

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="How-to-use-GetCallbackEventReference.aspx.vb" Inherits="How_to_use_Callback" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>How to use GetCallbackEventReference</title> 
     <script type="text/javascript"> 
      function GetNumber() { 
       UseCallback(); 
      } 
      function GetRandomNumberFromServer(txtGetNumber, context) { 
       document.forms[0].txtGetNumber.value = txtGetNumber 
      } 
     </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input id="Button1" type="button" value="Get Random Number" onclick="GetNumber()" /><br /><br /> 
     <asp:TextBox ID="txtGetNumber" runat="server"></asp:TextBox>&nbsp;</div> 
    </form> 
</body> 
</html> 

代碼隱藏

Partial Class How_to_use_Callback 
    Inherits System.Web.UI.Page 
    Implements System.Web.UI.ICallbackEventHandler 
    Dim CallbackResult As String = Nothing 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim cbReference As String = Page.ClientScript.GetCallbackEventReference(Me, "arg", "GetRandomNumberFromServer", "context") 
     Dim cbScript As String = "function UseCallback(arg,context)" & "{" & cbReference & " ; " & "}" 
     Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "UseCallback", cbScript, True) 
    End Sub 

    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult 
     Return CallbackResult 
    End Function 

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent 
     CallbackResult = Rnd().ToString() 
    End Sub 
End Class