TextBox et ViewState
Le
Fabrice

Bonjour à tous,
J'ai une page .aspx qui contient simplement un bouton et
un TextBox. Je ne comprends pas pourquoi lorsque je
définie le propriété EnableViewState à false pour le
TextBox, la valeur de la propriété Text de ce contrôle est
conservée après le clique sur le bouton ??? Pourquoi cet
état est conservé alors qu'une liste de valeur
DropDownList aurait perdu ces valeurs ???
Merci à tous
Fabrice
J'ai une page .aspx qui contient simplement un bouton et
un TextBox. Je ne comprends pas pourquoi lorsque je
définie le propriété EnableViewState à false pour le
TextBox, la valeur de la propriété Text de ce contrôle est
conservée après le clique sur le bouton ??? Pourquoi cet
état est conservé alors qu'une liste de valeur
DropDownList aurait perdu ces valeurs ???
Merci à tous
Fabrice
En mettant à EnableViewState = false pour votre TextBox, et en n'employant
aucun mécanisme viewstate pour les autres contrôles, votre page étant aussi
à EnableViewState="False", Regardez la source de votre browser avant le
submit et après le submit.
Vous vous apercevrez que :
<input type="hidden" name="__VIEWSTATE" a la même valeur avant et après le
submit.
Donc le mécanisme de viewState n'intervient pas. En fait, c'est le serveur
qui renvoie lors du retour postback les champs input avec leurs valeurs...
Et si, on met EnableViewState = true pour la textbox, les valeurs sont
toujours retournés et le champ <input type="hidden" name="__VIEWSTATE" ne
grossit toujours pas.
C'est que la Value du control n'est pas stocké en viewstate (voir docs sur
les créations de contrôle serveur pour bien comprendre).
Si vous utilisez <input type="text" id="montexte" runat=server>, vous aurez
le même phénomène (la propriété EnableViewState n'est pas disponible pour ce
HtmlControl dans les propriétés design mais existe bien pour le code. Le
serveur renvoie la page avec l'input et sa valeur après un postback.
En fait, comme HtmlInputText et TextBox dérive de Control qui possède la
propriété EnableViewState, on explique l'existance de cette propriété qui
est sans effet ici pour la value, pas pour d'autres propriétés du
HtmlInputText ou du TextBox ...
Ce que je pense, mais je peux me tromper, c'est qu'il a été décidé de
renvoyer l'input et sa valeur chez le client lors d'un postback. Comme on
utilise souvent des input type text dans nos formulaires et que la plupart
du temps, les développeurs allaient rendre disponible l'EnableViewState (et
d'ailleurs c'est la valeur par défaut pour les controls), il apparaissait
alors coûteux de "doubler" l'information dans le code : dans le champ input
type=text et dans le champ <input type="hidden" name="__VIEWSTATE".
L'usage du ViewState aurait perdu de sa crédibilité (et donc de son
utilité) à cause d'une taille encore plus importante.
Frédéric Mélantois
"Fabrice" news:1de0801c45516$ec7be300$
Bonjour à tous,
J'ai une page .aspx qui contient simplement un bouton et
un TextBox. Je ne comprends pas pourquoi lorsque je
définie le propriété EnableViewState à false pour le
TextBox, la valeur de la propriété Text de ce contrôle est
conservée après le clique sur le bouton ??? Pourquoi cet
état est conservé alors qu'une liste de valeur
DropDownList aurait perdu ces valeurs ???
Merci à tous
Fabrice
A bientôt,
Fabrice
et en n'employant
votre page étant aussi
browser avant le
avant et après le
c'est le serveur
leurs valeurs...
valeurs sont
name="__VIEWSTATE" ne
viewstate (voir docs sur
runat=server>, vous aurez
disponible pour ce
pour le code. Le
un postback.
qui possède la
cette propriété qui
propriétés du
été décidé de
postback. Comme on
et que la plupart
l'EnableViewState (et
il apparaissait
dans le champ input
name="__VIEWSTATE".
donc de son
dans le message de