2017-09-11 4 views
1

Je tente de créer un simple bouton "récupérer" pour un champ de valeurs. Pour une raison quelconque, les chaînes stockées dans ViewState ne s'affichent pas. J'ai suivi un tutoriel donc je ne sais vraiment pas ce que j'ai fait de mal, j'ai aussi cherché sur le web pour une réponse, le principal problème pour beaucoup étant qu'ils n'avaient pas activé ViewState dans la page, ce que je n'ai pas aussi Je l'ai ajouté (mais le bouton ne fonctionne toujours pas). En ce qui concerne la façon dont j'ai écrit le code, ou comment j'utilise ViewState, je n'ai pas pu trouver de problème. Toute aide serait appréciée.ViewState ne fonctionne pas sur post retour ASP.NET C#

Voilà donc ce que j'ai dans la page Contact.aspx:

<%@ Page Title="" Language="C#" EnableViewState="true"/*...*/ 

<asp:TextBox class="form-control" id="usr" runat="server"/> 

<asp:Button Text="Send" ID="buttonSend" runat="server" 
     onclick="buttonSend_Click"/> 
<asp:Button Text="Recover" id="buttonRecover" runat="server" 
     onclick="buttonRecover_Click"/> 

Et c'est le code derrière, en Contact.aspx.cs:

protected void buttonSend_Click(object sender, EventArgs e) 
{ 
    ViewState["name"] = Request.Form["usr"]; 
    usr.Text=string.Empty; 
} 
protected void buttonRecover_Click(object sender, EventArgs e) 
{ 
    usr.Text = Convert.ToString(ViewState["name"]); 
} 

Répondre

3

Le problème est que Request.Form["usr"] n'existe pas. L'ID d'un contrôle n'est pas identique à la clé de publication de formulaire (name d'un contrôle de saisie).

Il faut donc utiliser soit

ViewState["name"] = Request.Form[usr.UniqueID]; 

Ou la méthode recommandée

ViewState["name"] = usr.Text; 
+0

Eh oui, c'était le problème .. merci. J'ai changé le code avec usr.Text –