Pregunta

¿Cómo evitar primordial?

 public partial class test : System.Web.UI.Page {
    StringBuilder sb = new StringBuilder();

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {
            sb.Append("one");
            lbl.Text = sb.ToString();
        }

    }
    protected void cmdSb_Click(object sender, EventArgs e)
    {


        sb.Append("two");
        lbl.Text = sb.ToString();

    } }
¿Fue útil?

Solución

Recuerde, cada vez que lo hace cualquier de devolución de datos, incluso si es sólo para manejar un evento, el ciclo de vida completo de la página se ejecutará. Para ayudar a entender esto, se puede pensar en su código como si fuera todo en una gran función, de la misma familia:

public partial class test : System.Web.UI.Page
{
    // Page_Load runs for EVERYTHING
    protected void Page_Load(object sender, EventArgs e)
    {
        // -- Constructor Area
        StringBuilder sb = new StringBuilder();

        // -- Page Init Area

        // -- ViewSate is loaded

        // -- Page Load Area
        if (!IsPostBack)
        {
            sb.Append("one");
            lbl.Text = sb.ToString();
        }

        // -- Validation controls are checked

        // -- If valid, start handling events

        // Handle your click event
        if (cmdSb_Clicked)
        {
            sb.Append("two");
            lbl.Text = sb.ToString();
        }


        // -- DataBinding Area

        // -- Save ViewState           

        // -- Render Page: the class is turned into html that is sent to the browser

        // -- Unload -- Page is disposed

    }
}

Por supuesto, esto no es lo que realmente sucede, pero a partir de pensar en ello como esto y ya está en el camino correcto. En este caso, tenga en cuenta que el evento click no se ejecutará al mismo tiempo que su código !IsPostBack, pero está utilizando un nuevo StringBuilder cada vez.

Consulta aquí para obtener más información en la página del ciclo de vida:
http://msdn.microsoft.com/en-us/library/ms178472. aspx

Otros consejos

ASP.NET es sin estado, lo que significa que la instancia de StringBuilder no persistirá a través de la devolución de datos a menos que guarde a algo así como estado de vista o sesión de estado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top