Page.IsPostBack

En ocasiones es muy útil conseguir que se ejecute algo sólo cuando se carga la página por primera vez, o todo lo contrario, que se ejecute sólo a partir de la primera carga. Esto se consigue con Page.IsPostBack

Poniendo el típico ejemplo simple, queremos que nos aparezca la fecha y hora de la primera vez en que se carga la página, y que ésta se mantenga aunque la página vaya y vuelva al servidor.

Y para dejarlo más claro, ¿cuándo la página va y vuelve al servidor? Pues por ejemplo, cuando presionamos sobre un DropDownList con el atributo AutoPostBack puesto a true o cuando presionamos sobre un Button.

Pongamos el siguiente ejemplo:

mipagina.aspx
<%@ Page Language="C#" CodeFile="mipagina.aspx.cs" Inherits="mipagina" %>
<html>
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    </div>
    </form>
</body>
</html>


mipagina.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
         Label1.Text = DateTime.Now.ToString();
     }
}


Como se observa, cuando se cargue la página (Page_Load), si es falso que la página haya sido recargada (es decir, que es la primera vez que se carga), el texto de Label1 será la fecha y hora actual.
Comprobareis que si presionais sobre el button, la página va y vuelve al servidor, pero la fecha y hora sigue siendo la misma.

Para conseguir otro efecto distinto, cambiamos el Page_Load de mipagina.aspx.cs a lo siguiente:

    if (!Page.IsPostBack)
    {
         Label1.Text = "Primer acceso a la página";
     }
    else
    {
      
Label1.Text = DateTime.Now.ToString();
    }

Ahora, la primera vez que accedamos a la página se nos mostrará el texto "Primer acceso a la página" y cuando presionemos sobre el Button cambiará a la fecha y hora de ese momento.

Como conclusión, Page.IsPostBack no es más que un grano de arena en la enorme playa de herramientas que ofrece ASP.NET, pero es muy útil si se sabe usar... y claro está, el uso que se le dé depende ya de la imaginación de cada uno