Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

ClientScriptManager.GetCallbackEventReference-Methode (Control, String, String, String)

Ruft einen Verweis auf eine Clientfunktion ab, die beim Aufruf einen Clientrückruf für ein Serverereignis initiiert. Die Clientfunktion für diese überladene Methode schließt ein angegebenes Steuerelement, ein Argument, ein Clientskript sowie einen Kontext ein.

Namespace:  System.Web.UI
Assembly:  System.Web (in System.Web.dll)

public string GetCallbackEventReference(
	Control control,
	string argument,
	string clientCallback,
	string context
)

Parameter

control
Typ: System.Web.UI.Control
Das Server-Control, das den Clientrückruf behandelt. Das Steuerelement muss die ICallbackEventHandler-Schnittstelle implementieren und eine RaiseCallbackEvent-Methode bereitstellen.
argument
Typ: System.String
Ein Argument, das vom Clientskript an den Server übergeben wird.
RaiseCallbackEvent -Methode auf.
clientCallback
Typ: System.String
Der Name des Clientereignishandlers, der das Ergebnis des erfolgreich ausgeführten Serverereignisses empfängt.
context
Typ: System.String
Clientskript, das auf dem Client vor der Initialisierung des Rückrufs ausgewertet wird. Das Ergebnis des Skripts wird an den Clientereignishandler zurückgegeben.

Rückgabewert

Typ: System.String
Der Name einer Clientfunktion, die den Clientrückruf ausführt.

AusnahmeBedingung
ArgumentNullException

Das angegebene Control ist null.

InvalidOperationException

Das angegebene Control implementiert die ICallbackEventHandler-Schnittstelle nicht.

Die GetCallbackEventReference(Control, String, String, String)-Methode führt einen Out-of-Band-Rückruf, der eine modifizierte Version des normalen Lebenszyklus einer Seite ist, zum Server aus. Weitere Informationen finden Sie unter Programmgesteuertes Implementieren von Clientrückrufen ohne Postbacks in ASP.NET-Webseiten.

HinweisHinweis

Wenn es sich beim Browser um Microsoft Internet Explorer (ab Version 5.0) handelt, wird der Skriptrückrufmechanismus durch das Microsoft.XmlHttp-COM-Objekt implementiert, wobei im Browser die Ausführung von ActiveX-Steuerelementen festgelegt sein muss. Für andere Browser wird ein XMLHttpRequest mit dem lokalen Dokumentobjektmodell (DOM) des Browsers verwendet. Mithilfe der SupportsCallback-Eigenschaft können Sie überprüfen, ob ein Browser Clientrückrufe unterstützt. Um zu überprüfen, ob ein Browser XML über HTTP unterstützt, verwenden Sie die SupportsXmlHttp-Eigenschaft. Auf beide Eigenschaften können Sie über die Browser-Eigenschaft des systeminternen Request-Objekts von ASP.NET zugreifen.

Die GetCallbackEventReference-Überladung der GetCallbackEventReference-Methode führt einen Rückruf synchron mit XML über HTTP aus. Wenn Sie Daten synchron in ein Rückrufszenario senden, werden synchrone Rückrufe sofort zurückgegeben und der Browser wird nicht blockiert. Zwei synchrone Rückrufe können nicht gleichzeitig im Browser ausgeführt werden. Wenn ein zweiter synchroner Rückruf ausgelöst wird, während ein erster noch aussteht, wird dieser vom zweiten synchronen Rückruf abgebrochen. In einem solchen Fall wird nur der zweite Rückruf zurückgegeben.

Verwenden Sie zum asynchronen Versendung von Daten eine der Überladungen, die den useAsync-Parameter annimmt. Dieser ist ein boolescher Wert und steuert dieses Verhalten. In einem asynchronen Szenario können mehrere ausstehende Rückrufe vorhanden sein. Möglicherweise stimmt jedoch die Rückgabereihenfolge nicht mit der Reihenfolge überein, in der sie eingegangen sind.

Außerdem gibt die Überladung der GetCallbackEventReference-Methode keine Clientfunktion für die Behandlung eines von der RaiseCallbackEvent-Methode generierten Fehlers an. Um einen clientseitigen Fehlerrückrufhandler anzugeben, verwenden Sie eine der Überladungen, die den clientErrorCallback-Parameter annimmt.

Die GetCallbackEventReference(Control, String, String, String)-Methode nimmt einen optionalen argument-Zeichenfolgenparameter an und gibt eine Zeichenfolge zurück. Um mehrere Werte zu übergeben oder zu erhalten, müssen die Werte in der Eingabe- bzw. Rückgabezeichenfolge verkettet werden.

HinweisHinweis

Der Ansichtszustand sollte nicht in der Implementierung von Seiten- oder Steuerelementeigenschaften verwendet werden, die während der Skriptrückrufvorgänge aktualisiert werden müssen. Wenn die Eigenschaften nach dem Anfordern von Seiten weiterhin gültig sein sollen, können Sie den Sitzungszustand verwenden.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie zwei Überladungen der GetCallbackEventReference-Methode in einem clientseitigen Rückrufszenario verwenden, das ganze Zahlen inkrementiert.

Die beiden angezeigten Rückrufmechanismen unterscheiden sich in der Verwendung des context-Parameters. Unter Verwendung des context-Parameters wird eine ReceiveServerData1-Clientrückruffunktion bereitgestellt. Im Gegensatz dazu wird die ReceiveServerData2-Clientrückruffunktion in einem <script>-Block auf der Seite definiert. Eine RaiseCallbackEvent-Methode ist der Serverhandler, der den erhaltenen Wert inkrementiert, und die GetCallbackResult-Methode gibt diesen inkrementierten Wert als Zeichenfolge zurück. Wenn die RaiseCallbackEvent-Methode einen Fehler zurückgibt, wird die ProcessCallBackError-Clientfunktion aufgerufen.


<%@ Page Language="C#" %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

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

<script runat="server">

    public int cbCount = 0;

    // Define method that processes the callbacks on server.
    public void RaiseCallbackEvent(String eventArgument)
    {
        cbCount = Convert.ToInt32(eventArgument) + 1;
    }

    // Define method that returns callback result.
    public string GetCallbackResult()
    {
        return cbCount.ToString();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        // Define a StringBuilder to hold messages to output.
        StringBuilder sb = new StringBuilder();

        // Check if this is a postback.
        sb.Append("No page postbacks have occurred.");
        if (Page.IsPostBack)
        {
            sb.Append("A page postback has occurred.");
        }

        // Write out any messages.
        MyLabel.Text = sb.ToString();

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;

        // Define one of the callback script's context.
        // The callback script will be defined in a script block on the page.
        StringBuilder context1 = new StringBuilder();
        context1.Append("function ReceiveServerData1(arg, context)");
        context1.Append("{");
        context1.Append("Message1.innerText =  arg;");
        context1.Append("value1 = arg;");
        context1.Append("}");

        // Define callback references.
        String cbReference1 = cs.GetCallbackEventReference(this, "arg", 
            "ReceiveServerData1", context1.ToString());
        String cbReference2 = cs.GetCallbackEventReference("'" + 
            Page.UniqueID + "'", "arg", "ReceiveServerData2", "", 
            "ProcessCallBackError", false);
        String callbackScript1 = "function CallTheServer1(arg, context) {" + 
            cbReference1 + "; }";
        String callbackScript2 = "function CallTheServer2(arg, context) {" + 
            cbReference2 + "; }";

        // Register script blocks will perform call to the server.
        cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer1", 
            callbackScript1, true);
        cs.RegisterClientScriptBlock(this.GetType(), "CallTheServer2", 
            callbackScript2, true);

    }
</script>

<script type="text/javascript">
var value1 = 0;
var value2 = 0;
function ReceiveServerData2(arg, context)
{
    Message2.innerText = arg;
    value2 = arg;
}
function ProcessCallBackError(arg, context)
{
    Message2.innerText = 'An error has occurred.';
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ClientScriptManager Example</title>
</head>
<body>
    <form id="Form1" 
          runat="server">
    <div>
      Callback 1 result: <span id="Message1">0</span>
      <br />
      Callback 2 result: <span id="Message2">0</span>
      <br /> <br />
      <input type="button" 
             value="ClientCallBack1" 
             onclick="CallTheServer1(value1, alert('Increment value'))"/>    
      <input type="button" 
             value="ClientCallBack2" 
             onclick="CallTheServer2(value2, alert('Increment value'))"/>
      <br /> <br />
      <asp:Label id="MyLabel" 
                 runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Anzeigen: