2011-11-21 26 views
13

¿Hay alguna manera de forzar una devolución de datos en el código?Forzar una devolución de datos

Estoy buscando forzar el aumento de una devolución de datos desde un método en el código C# detrás de mi aplicación web asp.net.

+1

¿Puede ser más específico, y cuéntenos qué enfoques ha intentado hasta ahora? –

+1

eh, una devolución de datos es del cliente (navegador) al servidor. Entonces el código C# (que se ejecuta en el servidor) no puede hacer eso. –

+0

Creo que su pregunta es similar a la planteada [aquí] (http://stackoverflow.com/questions/1418532/how-to-force-a-postback-with-asp-net-and-c-sharp) – seanzi

Respuesta

9

una devolución de datos se activa después de un envío del formulario, por lo que está relacionado con una acción del cliente ... echar un vistazo aquí para una explicación: ASP.NET - Is it possible to trigger a postback from server code?

y aquí para una solución: http://forums.asp.net/t/928411.aspx/1

+0

¡Esto funcionó! ¡Gracias! –

+2

Para quienes usan las versiones más nuevas de .NET, debe usar 'Page.ClientScript.GetPostBackEventReference' ya que 'this.GetPostBackEventReference (...)' está obsoleto. También probablemente 'Page.ClientScript.RegisterStartupScript (...)'. – AzNjoE

1

No, no desde el código de atrás. Una devolución de datos es una solicitud iniciada desde una página en el cliente a sí misma en el servidor utilizando el método Http POST. En el lado del servidor puede solicitar una redirección, pero la solicitud será Http GET.

0

Puede llamar manualmente el método invocado por PostBack del evento Page_Load:

public void Page_Load(object sender, EventArgs e) 
{ 
    MyPostBackMethod(sender, e); 
} 

Pero si te refieres a si se puede tener el conjunto Page.IsPostBack propiedad a true sin cargo real de espalda, entonces la respuesta es no.

0

Puede usar un control vinculado a datos como Repeater o ListView, vuelva a vincularlo a una lista de propiedades de control según sea necesario y deje que genere los controles dinámicamente.

Como alternativa, puede usar Response.Redirect(".") para volver a cargar la misma página.

6

Puede intentar el redireccionamiento a la misma página.

Response.Redirect(Request.RawUrl); 
+0

Pero luego se pierden los valores del formulario ... –

+0

@Protectorone no a menos que ViewState [] primero y vuelva a cargar en la posterior devolución de datos en Page_Load() – Fandango68

4

más simple:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack(sender, e)", true); 
0

Mediante el uso de Server.Transfer ("YourCurrentPage.aspx"); podemos lograr esto fácilmente y es mejor que Response.Redirect(); coz Server.Transfer() te ahorrará el viaje de ida y vuelta.

+0

¿Esto no restablece los campos del formulario? Supongo que es como una nueva llamada de página, lo que significa que las entradas de usuario como los filtros se deshacerían (si no están almacenados en la sesión). – Undercover1989

1

Aquí la solución de http://forums.asp.net/t/928411.aspx/1 mencionada por mamoo - en caso de que el sitio web se desconecte. Funcionó bien para mí

StringBuilder sbScript = new StringBuilder(); 

sbScript.Append("<script language='JavaScript' type='text/javascript'>\n"); 
sbScript.Append("<!--\n"); 
sbScript.Append(this.GetPostBackEventReference(this, "PBArg") + ";\n"); 
sbScript.Append("// -->\n"); 
sbScript.Append("</script>\n"); 

this.RegisterStartupScript("AutoPostBackScript", sbScript.ToString()); 
Cuestiones relacionadas