Wie erhöhe ich einen Schrittwert verarbeitet werden, wenn die Seite geladen wird in ASP.NET?

StackOverflow https://stackoverflow.com/questions/418596

  •  03-07-2019
  •  | 
  •  

Frage

Wie kann ich einen Schrittwert erhöht verarbeitet, wenn die Seite geladen wird? Zum Beispiel wird in dem Code unter dem Ansichtszustand Variable erst nach Page_Load aufgrund des ASP.NET-Seite Lebenszyklus erhöht.

protected void Page_Load(object sender, EventArgs e)
{
    switch ((int)ViewState["step"])
    {
        //do something different for each step
    }
}

protected void btnIncrementStep_Click(object sender, EventArgs e)
{
    //when the button is clicked, this does not fire 
    //until after page_load finishes
    ViewState["step"] = (int)ViewState["step"] + 1;
}
War es hilfreich?

Lösung

Sie einfach die switch-Anweisung zu einem Ereignis bewegen, die später geschieht. Z.B. Loadcomplete () oder PreRender (). PreRender ist wahrscheinlich ein bisschen spät, je nachdem, was Sie tun möchten.

Andere Tipps

Es gibt keinen Weg, um dieses. Page_Load Ereignis wird immer passieren, bevor Steuerereignisse gefeuert werden. Wenn Sie etwas nach dem Steuerereignis tun müssen, verwenden Sie Page_PreRender.

ASP.Net Seite Lifecycle Bild

Erhöhungsschritte während des Loadcomplete Ereignis oder sogar während OnLoad.

Sie haben alle erforderlichen Informationen, um die Entscheidung zu treffen, ob aus den Formulardaten zu erhöhen. Sie müssen nicht für den onClick () Ereignis warten. Überprüfen Sie die Form, um zu sehen, wenn das Element angeklickt werden.

Schauen Sie in der request.params ( "__ EventArgs")

Diese identifiziert die Steuerung, die die Postbacks verursacht.

Wenn Sie den Wert während Page_Load zu erhöhen und zu überprüfen, dann wäre eine Option den Wert in der Sitzung zu speichern, statt Viewstate, z:

private int Step
{
  get { return (int)Session["step"]; }
  set { Session["step"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
       Step = 0; // init
    else
       Step ++; // increment

    switch (Step)
    {
        //do something different for each step
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top