miércoles, 13 de marzo de 2013

Uso de doPostBack en ASP.NET

En ASP.Net el código de servidor, o Code Behind se ejecuta cuando se lanza algún evento desde alguno de los controles, por ejemplo, se hace un click en un botón. Para que eso ocurra el control debe estar dentro de un formulario de servidor, es decir:

....
El evento provocará que un submit del formulario permitiendo así, ejecutar código de servidor.

Pero aquí nos surge un problema, que ocurre si queremos ejecutar código de servidor una vez que hemos sin emplear un control, por medio de Javascript. Para ello emplearemos la función __doPostBack()

$(function(){
    $('a').click(function(event){
        event.preventDefault();
        __doPostBack("updateButton","Click");
    });
});

Esto provocará que cada vez que se pulse sobre un enlace se ejecute el evento OnClick del control de servidor updateButton.

Para que podamos usar el manejo automático de eventos, tenemos que definir la página de la siguiente forma:

<%@ Page Language="VB" AutoEventWireup="true" EnableEventValidation="false" CodeFile="..." Inherits="..."  %>

Y finalmente en el evento OnLoad e la página deberemos invocar al ScriptCliente para que nos genere de forma automática el código de __doPostBack:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ClientScript.GetPostBackEventReference(Me, "")
    ....

2 comentarios:

  1. Si alguien pudiera mostrar cómo ejecutar un postback automático con un temporizador, para una página de un test con tiempo límite de respuesta para un usuario por fa. Entiendo de Asp.Net pero muy poco de JavaScript.

    ResponderEliminar
  2. Hola Oscar, tal vez podría ser viable esta etiqueta HTML:

    https://www.w3schools.com/tags/att_meta_http_equiv.asp

    Esta etiqueta fuerza al navegador a refrescarse de forma automática según el tiempo especificado.

    Ahora bien, yo no te lo recomendaría, las tecnologías más modernas de .NET se basan en utilizar javascript para conectarse a servicios, de forma que se puedan implementar SPAs. Personalmente te recomendaría que intentases hacerlo con Javascript.

    ResponderEliminar