Question

J'essaie de définir une variable ViewState lorsqu'un bouton est enfoncé, mais cela ne fonctionne que la deuxième fois que je clique sur le bouton.Voici le code-behind :

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        lblInfo.InnerText = String.Format("Hello {0} at {1}!", YourName, DateTime.Now.ToLongTimeString());
    }
}

private string YourName
{
    get { return (string)ViewState["YourName"]; }
    set { ViewState["YourName"] = value; }
}


protected void btnSubmit_Click(object sender, EventArgs e)
{
    YourName = txtName.Text;

}

Y a-t-il quelque chose qui me manque ?Voici la partie du fichier de conception, très basique tout comme un POC:

<form id="form1" runat="server">
<div>
Enter your name: <asp:TextBox runat="server" ID="txtName"></asp:TextBox>
<asp:Button runat="server" ID="btnSubmit" Text="OK" onclick="btnSubmit_Click" />
<hr />
<label id="lblInfo" runat="server"></label>
</div>
</form>

PS : L'exemple est très simplifié, "utilisez txtName.Text au lieu de ViewState" n'est pas la bonne réponse, j'ai besoin que les informations soient dans ViewState.

Était-ce utile?

La solution

Page_Load incendies avant btnSubmit_Click.

Si vous souhaitez faire quelque chose après le déclenchement de vos événements de publication, utilisez Page_PreRender.

//this will work because YourName has now been set by the click event
protected void Page_PreRender(object sender, EventArgs e)
{
    if (Page.IsPostBack)
        lblInfo.InnerText = String.Format("Hello {0} at {1}!", YourName, DateTime.Now.ToLongTimeString());
}

L'ordre de base est le suivant :

  • L'initialisation de la page se déclenche (l'initialisation ne peut pas accéder à ViewState)
  • ViewState est lu
  • Incendies de chargement de page
  • Tous les événements se déclenchent
  • Déclenchements de pré-rendu
  • Rendus de pages
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top