2011-01-14 4 views
7

Fondamentalmente, ho un usercontrol di asp.net ajax abilitato, e ora mi piacerebbe solo restituire un valore di stringa semplice, da utilizzare in alcuni js che sto sparando dopo la richiesta Ajax è fatta.Valori di ritorno da codice a asp.net ajax endrequest

Ho giocato con il metodo endrequest, che ho già configurato per la gestione delle eccezioni, che funziona bene. Ma non c'è modo di restituire semplicemente un valore stringa?

Prima ho pensato di poterlo fare tramite Response.Write(); ma args.get_response() non piace quando lo fai apparentemente - qualcuno può indicarmi la giusta direzione?

Grazie!

risposta

11

È possibile utilizzare il metodo ScriptManager.RegisterDataItem con Sys.WebForms.PageRequestManager. Si consideri il seguente pagina di prova che quando si fa clic sul pulsante registra elemento di dati con lo script manager e al lato client gestisce l'EndRequest e ottenere tale elemento di dati,

<%@ 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

Forse non capisco il tuo problema, ma cosa usercontrol ha a che fare con le chiamate js aggiuntive? Stai solo rendendo questo js dal controllo utente?

In ogni caso, IMO È necessario utilizzare ASP.NET Web Handler (* .ashx) o HttpHandler per restituire il valore stringa e chiamare tale gestore con tale js aggiuntivo.