Frage

Wie überwiegende vermeiden?

 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();

    } }
War es hilfreich?

Lösung

Denken Sie daran, jedes Mal wenn Sie Stellen Sie keine Postbacks, auch wenn es nur ein Ereignis zu behandeln, die voll Lebenszyklus ausgeführt wird. Um dies zu verstehen, können Sie Ihren Code denken, als ob sie alle in einer Funktion groß waren, mehr wie folgt aus:

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

    }
}

Dies ist natürlich nicht das, was tatsächlich passiert, aber es wie folgt beginnen Denken und du bist auf dem richtigen Weg. In diesem Fall beachten Sie, dass Ihr Click-Ereignis wird nie zur gleichen Zeit wie Ihr !IsPostBack Code ausführen, aber Sie einen neuen String mit jedes Mal.

Überprüfen Sie hier, um weitere Informationen auf der Seite Lebenszyklus:
http://msdn.microsoft.com/en-us/library/ms178472. aspx

Andere Tipps

ASP.NET staatenlos ist, was bedeutet, dass Ihr String Instanz nicht durch den Postback anhalten wird, wenn Sie es so etwas wie Ansichtszustand oder Sitzungszustand speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top