OVH Cloud OVH Cloud

ViewState

6 réponses
Avatar
nicolas franchet
Bonjour,

Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
j'ai ca dans ma page asp :

<%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
AutoEventWireup="false" Inherits="maquette.saisie_societe"
enableViewState="False"%>
<asp:placeholder id="PLresults" runat="server"
EnableViewState="False"></asp:placeholder>

et dans mon code je rajoute les WebControls que je veux, mais au final
ca me rajoute tjs un champ __VIEWSTATE

<HTML>
<HEAD><TITLE>Login EN</TITLE></HEAD
<BODY>
<form name="MyForm" method="POST" action="Default.aspx" id="MyForm">
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
</form>
</HTML>

Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien
a false enableviewstate :

HtmlForm MyForm=new HtmlForm(); MyForm.ID="MyForm";
MyForm.EnableViewState=false;
MyForm.Method="POST";
....
Apres j'ajoute ce control dans le PlaceHolder PLresults


Je n'y comprend rien

Alors j'ai deux possibilites :
Faut-il mettre enableViewState=false sur tous les controls quand on les
ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?

Merci pour l'aide :)

Nicolas

6 réponses

Avatar
nicolas franchet
Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate
en redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca
me semble pas 'simple' et pas tres "jolie" :(

Si qqn a une autre idee :)


nicolas franchet a écrit :
Bonjour,

Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
j'ai ca dans ma page asp :

<%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
AutoEventWireup="false" Inherits="maquette.saisie_societe"
enableViewState="False"%>
<asp:placeholder id="PLresults" runat="server"
EnableViewState="False"></asp:placeholder>

et dans mon code je rajoute les WebControls que je veux, mais au
final ca me rajoute tjs un champ __VIEWSTATE

<HTML>
<HEAD><TITLE>Login EN</TITLE></HEAD
<BODY>
<form name="MyForm" method="POST" action="Default.aspx"
id="MyForm">
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
</form>
</HTML>

Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien
a false enableviewstate :

HtmlForm MyForm=new HtmlForm();
MyForm.ID="MyForm";
MyForm.EnableViewStateúlse;
MyForm.Method="POST";
....
Apres j'ajoute ce control dans le PlaceHolder PLresults


Je n'y comprend rien

Alors j'ai deux possibilites :
Faut-il mettre enableViewStateúlse sur tous les controls quand on
les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?

Merci pour l'aide :)

Nicolas


Avatar
Simon Mourier [MS]
Pourquoi chercher à enlever ce champ? Il est utilisé par ASP.NET
Simon.

"nicolas franchet" a écrit dans le message
de news: d0209t$af8$
Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate en
redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca me
semble pas 'simple' et pas tres "jolie" :(

Si qqn a une autre idee :)


nicolas franchet a écrit :
Bonjour,

Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
j'ai ca dans ma page asp :

<%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
AutoEventWireup="false" Inherits="maquette.saisie_societe"
enableViewState="False"%>
<asp:placeholder id="PLresults" runat="server"
EnableViewState="False"></asp:placeholder>

et dans mon code je rajoute les WebControls que je veux, mais au
final ca me rajoute tjs un champ __VIEWSTATE

<HTML>
<HEAD><TITLE>Login EN</TITLE></HEAD
<BODY>
<form name="MyForm" method="POST" action="Default.aspx"
id="MyForm">
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
</form>
</HTML>

Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien a
false enableviewstate :

HtmlForm MyForm=new HtmlForm();
MyForm.ID="MyForm";
MyForm.EnableViewStateúlse;
MyForm.Method="POST"; ....
Apres j'ajoute ce control dans le PlaceHolder PLresults


Je n'y comprend rien

Alors j'ai deux possibilites :
Faut-il mettre enableViewStateúlse sur tous les controls quand on
les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?

Merci pour l'aide :)

Nicolas




Avatar
nicolas franchet
Ben, en fait c'est lui qui me force a l'enlever, j'explique :

J'ai un systeme d'affichage de composition des pages web entierement en
code. Je n'ai qu'un seul control, un PlaceHolder, dans lequel j'ajoute
toutes les balises (par le biais d'un fichier XML pour me faire des
'templates' modifiables sans recompilation de l'appli)

Le probleme que j'ai est que lorsque j'ajoute le control HTMLForm
(obligatoire pour ajouter les autres WebControls) il ne me donne pas la
possibilite de choisir quelle 'action' du formulaire je veux, c'est
obligatoirement la page courante. Or j'ai besoin que ca change suivant
les cas.
J'ai donc ajoute un code cote client (du javascript) pour changer
l'action du formulaire et faire le submit. Mais comme Asp.Net utilise le
champ __VIEWSTATE pour vérifier les données à la reception de la page il
me dit que le VIEWSTATE est invalide. Ca je le sais vu que c'est pas la
page qui a créé les controles qui les utilise ensuite.

Je débute en Asp.Net, et j'ai sans doute fait les choses comme il faut
pas, mais comment peut-on faire changer l'action d'un formulaire par du
code coté serveur ? J'ai bien essaye un Redirect, mais ca ne marche pas,
je perds les infos du request et j'ai pas envie de les mettre dans la
session à chaque fois.

Je sais pas si j'ai vraiment ete clair :)

Simon Mourier [MS] a écrit :
Pourquoi chercher à enlever ce champ? Il est utilisé par ASP.NET
Simon.

"nicolas franchet" a écrit dans le message
de news: d0209t$af8$

Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate en
redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca me
semble pas 'simple' et pas tres "jolie" :(

Si qqn a une autre idee :)


nicolas franchet a écrit :

Bonjour,

Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
j'ai ca dans ma page asp :

<%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
AutoEventWireup="false" Inherits="maquette.saisie_societe"
enableViewState="False"%>
<asp:placeholder id="PLresults" runat="server"
EnableViewState="False"></asp:placeholder>

et dans mon code je rajoute les WebControls que je veux, mais au
final ca me rajoute tjs un champ __VIEWSTATE

<HTML>
<HEAD><TITLE>Login EN</TITLE></HEAD
<BODY>
<form name="MyForm" method="POST" action="Default.aspx"
id="MyForm">
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
</form>
</HTML>

Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien a
false enableviewstate :

HtmlForm MyForm=new HtmlForm();
MyForm.ID="MyForm";
MyForm.EnableViewStateúlse;
MyForm.Method="POST"; ....
Apres j'ajoute ce control dans le PlaceHolder PLresults


Je n'y comprend rien

Alors j'ai deux possibilites :
Faut-il mettre enableViewStateúlse sur tous les controls quand on
les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?

Merci pour l'aide :)

Nicolas









Avatar
c.sansus
Le problème est clair : tu essayes de dérouter le comportement d'aps.net en
essayant de modifier le code du form. En faisant ca, tu bouleverses tout le
processus de traitement des requêtes, de gestion des évènement d'asp.net et
donc il hurle.

Bref ... tu t'y prends mal.Le fait que l'action d'un form redirige vers la
meme page fait partie intégrante de l'asp.net, donc pas possible de le
changer, sinon tu fais de l'asp tout court. En asp.net, on fait de
"l'évènementiel" (c'est un grand mot).

Au pire, si vraiment c'est ce que tu veux faire, tu peux lors du OnLoad dans
le cas d'un postback de ta page, faire un Server.Transfert("superpaage.aspx",
true).


"nicolas franchet" wrote:

Ben, en fait c'est lui qui me force a l'enlever, j'explique :

J'ai un systeme d'affichage de composition des pages web entierement en
code. Je n'ai qu'un seul control, un PlaceHolder, dans lequel j'ajoute
toutes les balises (par le biais d'un fichier XML pour me faire des
'templates' modifiables sans recompilation de l'appli)

Le probleme que j'ai est que lorsque j'ajoute le control HTMLForm
(obligatoire pour ajouter les autres WebControls) il ne me donne pas la
possibilite de choisir quelle 'action' du formulaire je veux, c'est
obligatoirement la page courante. Or j'ai besoin que ca change suivant
les cas.
J'ai donc ajoute un code cote client (du javascript) pour changer
l'action du formulaire et faire le submit. Mais comme Asp.Net utilise le
champ __VIEWSTATE pour vérifier les données à la reception de la page il
me dit que le VIEWSTATE est invalide. Ca je le sais vu que c'est pas la
page qui a créé les controles qui les utilise ensuite.

Je débute en Asp.Net, et j'ai sans doute fait les choses comme il faut
pas, mais comment peut-on faire changer l'action d'un formulaire par du
code coté serveur ? J'ai bien essaye un Redirect, mais ca ne marche pas,
je perds les infos du request et j'ai pas envie de les mettre dans la
session à chaque fois.

Je sais pas si j'ai vraiment ete clair :)

Simon Mourier [MS] a écrit :
> Pourquoi chercher à enlever ce champ? Il est utilisé par ASP.NET
> Simon.
>
> "nicolas franchet" a écrit dans le message
> de news: d0209t$af8$
>
>>Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate en
>>redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca me
>>semble pas 'simple' et pas tres "jolie" :(
>>
>>Si qqn a une autre idee :)
>>
>>
>>nicolas franchet a écrit :
>>
>>>Bonjour,
>>>
>>> Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
>>> j'ai ca dans ma page asp :
>>>
>>><%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
>>>AutoEventWireup="false" Inherits="maquette.saisie_societe"
>>>enableViewState="False"%>
>>><asp:placeholder id="PLresults" runat="server"
>>>EnableViewState="False"></asp:placeholder>
>>>
>>> et dans mon code je rajoute les WebControls que je veux, mais au
>>>final ca me rajoute tjs un champ __VIEWSTATE
>>>
>>><HTML>
>>> <HEAD><TITLE>Login EN</TITLE></HEAD
>>> <BODY>
>>> <form name="MyForm" method="POST" action="Default.aspx"
>>>id="MyForm">
>>><input type="hidden" name="__VIEWSTATE"
>>>value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
>>> </form>
>>></HTML>
>>>
>>> Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
>>>faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien a
>>>false enableviewstate :
>>>
>>> HtmlForm MyForm=new HtmlForm();
>>>MyForm.ID="MyForm";
>>> MyForm.EnableViewStateúlse;
>>> MyForm.Method="POST"; ....
>>> Apres j'ajoute ce control dans le PlaceHolder PLresults
>>>
>>>
>>>Je n'y comprend rien
>>>
>>>Alors j'ai deux possibilites :
>>> Faut-il mettre enableViewStateúlse sur tous les controls quand on
>>>les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?
>>>
>>>Merci pour l'aide :)
>>>
>>>Nicolas
>
>
>



Avatar
nicolas franchet
Impeccable, c'est exactement ce que je voulais faire :) et je l'ai
chercher cette methode de "redirection" :)

c.sansus a écrit :
Le problème est clair : tu essayes de dérouter le comportement d'aps.net en
essayant de modifier le code du form. En faisant ca, tu bouleverses tout le
processus de traitement des requêtes, de gestion des évènement d'asp.net et
donc il hurle.

Bref ... tu t'y prends mal.Le fait que l'action d'un form redirige vers la
meme page fait partie intégrante de l'asp.net, donc pas possible de le
changer, sinon tu fais de l'asp tout court. En asp.net, on fait de
"l'évènementiel" (c'est un grand mot).

Au pire, si vraiment c'est ce que tu veux faire, tu peux lors du OnLoad dans
le cas d'un postback de ta page, faire un Server.Transfert("superpaage.aspx",
true).


"nicolas franchet" wrote:


Ben, en fait c'est lui qui me force a l'enlever, j'explique :

J'ai un systeme d'affichage de composition des pages web entierement en
code. Je n'ai qu'un seul control, un PlaceHolder, dans lequel j'ajoute
toutes les balises (par le biais d'un fichier XML pour me faire des
'templates' modifiables sans recompilation de l'appli)

Le probleme que j'ai est que lorsque j'ajoute le control HTMLForm
(obligatoire pour ajouter les autres WebControls) il ne me donne pas la
possibilite de choisir quelle 'action' du formulaire je veux, c'est
obligatoirement la page courante. Or j'ai besoin que ca change suivant
les cas.
J'ai donc ajoute un code cote client (du javascript) pour changer
l'action du formulaire et faire le submit. Mais comme Asp.Net utilise le
champ __VIEWSTATE pour vérifier les données à la reception de la page il
me dit que le VIEWSTATE est invalide. Ca je le sais vu que c'est pas la
page qui a créé les controles qui les utilise ensuite.

Je débute en Asp.Net, et j'ai sans doute fait les choses comme il faut
pas, mais comment peut-on faire changer l'action d'un formulaire par du
code coté serveur ? J'ai bien essaye un Redirect, mais ca ne marche pas,
je perds les infos du request et j'ai pas envie de les mettre dans la
session à chaque fois.

Je sais pas si j'ai vraiment ete clair :)

Simon Mourier [MS] a écrit :

Pourquoi chercher à enlever ce champ? Il est utilisé par ASP.NET
Simon.

"nicolas franchet" a écrit dans le message
de news: d0209t$af8$


Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate en
redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca me
semble pas 'simple' et pas tres "jolie" :(

Si qqn a une autre idee :)


nicolas franchet a écrit :


Bonjour,

Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
j'ai ca dans ma page asp :

<%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
AutoEventWireup="false" Inherits="maquette.saisie_societe"
enableViewState="False"%>
<asp:placeholder id="PLresults" runat="server"
EnableViewState="False"></asp:placeholder>

et dans mon code je rajoute les WebControls que je veux, mais au
final ca me rajoute tjs un champ __VIEWSTATE

<HTML>
<HEAD><TITLE>Login EN</TITLE></HEAD
<BODY>
<form name="MyForm" method="POST" action="Default.aspx"
id="MyForm">
<input type="hidden" name="__VIEWSTATE"
value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
</form>
</HTML>

Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien a
false enableviewstate :

HtmlForm MyForm=new HtmlForm();
MyForm.ID="MyForm";
MyForm.EnableViewStateúlse;
MyForm.Method="POST"; ....
Apres j'ajoute ce control dans le PlaceHolder PLresults


Je n'y comprend rien

Alors j'ai deux possibilites :
Faut-il mettre enableViewStateúlse sur tous les controls quand on
les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?

Merci pour l'aide :)

Nicolas













Avatar
Sylvain
Bonjour Nicolas,

J'ai lu brièvement ce que tu fais dans ton application et cela m'intéresse
beaucoup.
Moi aussi je suis entrain développer une sorte de "Template builder" mais
pas du tout de la même façon. Moins de libertés et plus de contraintes que
toi.
Pourrais tu me donner plus d'explications sur le principe ?
Tu peux me contacter à l'adresse suivante:

"nicolas franchet" a écrit :

Impeccable, c'est exactement ce que je voulais faire :) et je l'ai
chercher cette methode de "redirection" :)

c.sansus a écrit :
> Le problème est clair : tu essayes de dérouter le comportement d'aps.net en
> essayant de modifier le code du form. En faisant ca, tu bouleverses tout le
> processus de traitement des requêtes, de gestion des évènement d'asp.net et
> donc il hurle.
>
> Bref ... tu t'y prends mal.Le fait que l'action d'un form redirige vers la
> meme page fait partie intégrante de l'asp.net, donc pas possible de le
> changer, sinon tu fais de l'asp tout court. En asp.net, on fait de
> "l'évènementiel" (c'est un grand mot).
>
> Au pire, si vraiment c'est ce que tu veux faire, tu peux lors du OnLoad dans
> le cas d'un postback de ta page, faire un Server.Transfert("superpaage.aspx",
> true).
>
>
> "nicolas franchet" wrote:
>
>
>> Ben, en fait c'est lui qui me force a l'enlever, j'explique :
>>
>>J'ai un systeme d'affichage de composition des pages web entierement en
>>code. Je n'ai qu'un seul control, un PlaceHolder, dans lequel j'ajoute
>>toutes les balises (par le biais d'un fichier XML pour me faire des
>>'templates' modifiables sans recompilation de l'appli)
>>
>> Le probleme que j'ai est que lorsque j'ajoute le control HTMLForm
>>(obligatoire pour ajouter les autres WebControls) il ne me donne pas la
>>possibilite de choisir quelle 'action' du formulaire je veux, c'est
>>obligatoirement la page courante. Or j'ai besoin que ca change suivant
>>les cas.
>> J'ai donc ajoute un code cote client (du javascript) pour changer
>>l'action du formulaire et faire le submit. Mais comme Asp.Net utilise le
>>champ __VIEWSTATE pour vérifier les données à la reception de la page il
>>me dit que le VIEWSTATE est invalide. Ca je le sais vu que c'est pas la
>>page qui a créé les controles qui les utilise ensuite.
>>
>> Je débute en Asp.Net, et j'ai sans doute fait les choses comme il faut
>>pas, mais comment peut-on faire changer l'action d'un formulaire par du
>>code coté serveur ? J'ai bien essaye un Redirect, mais ca ne marche pas,
>>je perds les infos du request et j'ai pas envie de les mettre dans la
>>session à chaque fois.
>>
>> Je sais pas si j'ai vraiment ete clair :)
>>
>>Simon Mourier [MS] a écrit :
>>
>>>Pourquoi chercher à enlever ce champ? Il est utilisé par ASP.NET
>>>Simon.
>>>
>>>"nicolas franchet" a écrit dans le message
>>>de news: d0209t$af8$
>>>
>>>
>>>>Bon j'ai trouve une 'solution' pour ne pas avoir m'occuper du viewstate en
>>>>redefinissant la methode LoadPageStateFromPersistenceMedium() mais ca me
>>>>semble pas 'simple' et pas tres "jolie" :(
>>>>
>>>>Si qqn a une autre idee :)
>>>>
>>>>
>>>>nicolas franchet a écrit :
>>>>
>>>>
>>>>>Bonjour,
>>>>>
>>>>> Y a-t-il un moyen de ne pas avoir le viewState d'activer ?
>>>>> j'ai ca dans ma page asp :
>>>>>
>>>>><%@ Page language="c#" Codebehind="saisie_societe.aspx.cs"
>>>>>AutoEventWireup="false" Inherits="maquette.saisie_societe"
>>>>>enableViewState="False"%>
>>>>><asp:placeholder id="PLresults" runat="server"
>>>>>EnableViewState="False"></asp:placeholder>
>>>>>
>>>>> et dans mon code je rajoute les WebControls que je veux, mais au
>>>>>final ca me rajoute tjs un champ __VIEWSTATE
>>>>>
>>>>><HTML>
>>>>> <HEAD><TITLE>Login EN</TITLE></HEAD
>>>>> <BODY>
>>>>> <form name="MyForm" method="POST" action="Default.aspx"
>>>>>id="MyForm">
>>>>><input type="hidden" name="__VIEWSTATE"
>>>>>value="dDwtMTQzNDM3MTM3OTs7PqbT/kU2k5sFukXZu7MMk6GnT147" />
>>>>> </form>
>>>>></HTML>
>>>>>
>>>>> Je rachoute le Control HTMLForm par du code et je n'arrive pas a lui
>>>>>faire comprendre que je ne veux pas du ViewState (et pourtant j'ai bien a
>>>>>false enableviewstate :
>>>>>
>>>>> HtmlForm MyForm=new HtmlForm();
>>>>>MyForm.ID="MyForm";
>>>>> MyForm.EnableViewStateúlse;
>>>>> MyForm.Method="POST"; ....
>>>>> Apres j'ajoute ce control dans le PlaceHolder PLresults
>>>>>
>>>>>
>>>>>Je n'y comprend rien
>>>>>
>>>>>Alors j'ai deux possibilites :
>>>>> Faut-il mettre enableViewStateúlse sur tous les controls quand on
>>>>>les ajoute par du code ? ou est-ce qu'il y a une 'astuce' qqpart ?
>>>>>
>>>>>Merci pour l'aide :)
>>>>>
>>>>>Nicolas
>>>
>>>
>>>