2011-01-14 18 views
7

Grundsätzlich habe ich eine ASP.NET AJAX-Benutzersteuerung aktiviert, und jetzt möchte ich nur einen einfachen String-Wert, in einigen JS verwendet werden, ich werde nach feuern Die Ajax-Anfrage ist erledigt.Rückgabewerte von Code zu asp.net ajax endrequest

Ich habe mit der endRequest-Methode herumgespielt, die ich bereits für die Ausnahmebehandlung eingerichtet habe, was gut funktioniert. Aber gibt es keine Möglichkeit, einfach einen String-Wert zurückzugeben?

Zuerst dachte ich, ich könnte dies durch Response.Write(); aber args.get_response() mag es nicht, wenn du das apparent machst - kann mir jemand in die richtige Richtung zeigen?

Danke!

Antwort

11

Sie können die ScriptManager.RegisterDataItem-Methode mit dem Sys.WebForms.PageRequestManager verwenden. Betrachten Sie die folgende Testseite, die, wenn Sie auf die Schaltfläche klicken, um es Datenelement mit dem Skript-Manager registriert und auf der Client-Seite den Endrequest behandelt und diese Daten Einzelteil erhalten,

<%@ Page Language="C#" AutoEventWireup="true" Inherits="WebApplication1._Default" %> 

<script runat="server"> 
    protected void btTest_Click(object sender, EventArgs e) 
    { 
     ScriptManager1.RegisterDataItem(btTest, "Your value to pass to the client"); 
    } 
</script> 

<!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></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <asp:UpdatePanel ID="upTest" runat="server"> 
      <ContentTemplate> 
       <asp:Button ID="btTest" runat="server" Text="Click Me" OnClick="btTest_Click" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
    </form> 
</body> 
<script language="javascript" type="text/javascript"> 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

    function endRequestHandler(sender, args) { 
     var dataItems = args.get_dataItems()['<%= btTest.ClientID %>']; 
     if (dataItems != null) 
      alert(dataItems); 
    } 
</script> 
</html> 
-1

Vielleicht verstehe ich nicht Ihr Problem, aber welche usersteuerung hatte mit diesen zusätzlichen js anrufen zu tun? Sie rendern nur diese js von Benutzersteuerung?

Wie auch immer, IMO Sie sollten ASP.NET Web Handler (* .ashx) oder HttpHandler verwenden, um Zeichenfolgenwert zurückzugeben und diesen Handler mit dieser zusätzlichen js aufzurufen.