Salut tout le monde.
Voilà mon problème :
J'ai un Custom Control, hérité de Panel, dans lequel j'ajoute un HiddenField.
Dans ce Custom Control, j'ajoute des références vers mes classes .js et initialise la nouvelle instance de celle-ci dans mon Custom Control. En gros, cela fait :
Mon Custom Control est placé tout simplement sur ma page aspx de cette façon, dans un UpdatePanel, afin de conserver les données du Hidden. J'ai un bouton sur lequel j'ajoute un trigger lié a l'updatePanel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class MonCustomControl:Panel { //Mon hidden private HiddenField hidden = new HiddenField(); protected override void OnInit(EventArgs e) { /*Register des fichiers JS ici */ this.hidden.ID = "MonHidden"; this.Controls.Add(this.hidden); } protected override void OnLoad(EventArgs e) { //Ici, je vais créer une nouvelle instance de ma classe js ScriptManager.RegisterStartUpScript(this,typeof(MonCustomControl),"key",string.Format("var maClasse = new MaClasse('{0}')",this.hidden.ClientID)); } }
Enfin, dans mon aspx.cs, j'ajoute un OnClientClick sur mon bouton qui va appeler une méthode de ma classe js:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <asp:UpdatePanel runat="server" ID="UpdatePanel"> <Triggers> <asp:AsyncPostBackTrigger ControlID="ButtonValidate" EventName="Click" /> </Triggers> <ContentTemplate> <cc1:MonCustomControl runat="server" ID="MonCustomControl1"></cc1:MonCustomControl > </ContentTemplate> </asp:UpdatePanel>
Et donc, je récupère bien la donnée côté cliente, en faisant un alert() dans ma méthode FillHidden du contenu de mon Hidden, je vois bien ce même contenu. Par contre, dès que j'essaie ensuite de la récupérer côté serveur, de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 this.ButtonValidate.OnClientClick = "maClasse.FillHidden();";, j'ai une valeur vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part string myValue = this.hidden.value
J'ai alors utilisé Fiddler pour regarder, et il ne m'affiche même pas mon HiddenField dans les WebForms de SessionsInspector...
Je ne comprends pas du tout pourquoi ce Hidden est vide et de plus invisible !
Merci de votre aide .
Partager