Je ne comprend pas bien pourquoi ta variable ne prend pas le texte de ton controle si celui ci est en invisible car il est toujours géré par le compilateur même en invisible (il existe quoi). Soit, supposons qu'il soit inaccessible, je n'ai pas testé, pourquoi ne prend tu pas le teste dans ta variable avant de le mettre en invisible. Et si tu veux qu'il soit en invisible dès le début, pourquoi pas le laisser visible et dans ton évènement load mettre:
Session.Add("nom_de_la_variable", toncontrol.Text);
toncontrol.visible=false;
De cette facon il prend le texte avant de le mettre en invisible (mais le fait qu'il ne sache pas saisir le texte lorsque l'objet était en invisible, ca je ne savais pas

)