2011-01-14 7 views
7

Básicamente, tengo un asp.net ajax habilitado usercontrol, y ahora me gustaría simplemente devolver un valor de cadena simple, para ser utilizado en algunos js estoy disparando después la solicitud de ajax está hecha.Devolviendo valores del código a asp.net ajax endrequest

He estado jugando con el método endrequest, que ya configuré para el manejo de excepciones, que funciona bien. ¿Pero no hay forma de simplemente devolver un valor de cadena?

Primero pensé que podría hacer esto a través de Response.Write(); pero a args.get_response() no le gusta cuando lo haces aparentemente, ¿alguien puede indicarme la dirección correcta?

Gracias!

Respuesta

11

Puede utilizar el método ScriptManager.RegisterDataItem con Sys.WebForms.PageRequestManager. Considere la página de prueba después de lo cual al hacer clic en el botón registra elemento de datos con el gestor de guión y en el lado del cliente que maneja el EndRequest y conseguir que el elemento de datos,

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

Tal vez no entienden su problema, pero, ¿qué control de usuario tenía que ver con esas llamadas js adicionales? ¿Simplemente estás renderizando ese js del control del usuario?

De todos modos, IMO Debería utilizar ASP.NET Web Handler (* .ashx) o HttpHandler para devolver el valor de cadena y llamar a ese controlador con esa js adicional.

Cuestiones relacionadas