Quand le code var accNo = '<%=Session["hdnAccession"]%>'; sera exécuté?. Je modifie la variable de session dans l'événement Page_LoadComplete, mais lorsque j'y accède en utilisant var accNo = '<%=Session["hdnAccession"]%>';, elle renvoie toujours la valeur que j'ai définie en PREMIER. Dans Page_LoadComplete, j'aime ce qui suit ... Session["hdnAccession"] = GetNewAccession(), Quand j'ai débogué, j'ai vu que le Session["hdnAccession"] se mettait à jour à chaque fois. Mais pourquoi n'est-il pas mis à jour en JavaScript?. Je suis dans une situation où je ne peux pas utiliser HiddenField au lieu de Seession.

2
Rauf 26 sept. 2011 à 17:01

3 réponses

Meilleure réponse

Vous devez créer un PostBack pour accéder aux variables de session à partir de JS. Ainsi:

<script type="text/javascript">
<!--
function setSessionVariable(valueToSetTo)
{
 __doPostBack('SetSessionVariable', valueToSetTo);
}
// -->
</script>

private void Page_Load(object sender, System.EventArgs e)
{
 // Insure that the __doPostBack() JavaScript method is created...
 this.GetPostBackEventReference(this, string.Empty);

 if ( this.IsPostBack )
 {
  string eventTarget = (this.Request["__EVENTTARGET"] == null) ? string.Empty : this.Request["__EVENTTARGET"];
  string eventArgument = (this.Request["__EVENTARGUMENT"] == null) ? string.Empty : this.Request["__EVENTARGUMENT"];

  if ( eventTarget == "SetSessionVariable" )
  {
   Session["someSessionKey"] = eventArgument;
  }
 }
}

Voir ici: http://forums.asp.net/post/2230824.aspx

2
Mack 26 sept. 2011 à 13:14

Votre bloc de code obtient ses valeurs lorsque la page est rendue, et par conséquent, toutes les valeurs définies dans Page_Load ou Page_LoadCompleted doivent être vues correctement du côté client.

Si ce n'est pas le cas, il doit y avoir un problème différent - essayez de tester cela en ajoutant une propriété temporaire à la page, initialisez-la dans Page_Load et écrivez-la du côté client (c'est-à-dire var test = "<%=SomeProperty%>";).

Si le problème ne survient qu'après avoir effectué une publication (ce n'est pas très clair à partir de votre question), vous devrez probablement utiliser des champs masqués après tout. Il peut y avoir d'autres façons de gérer cela, mais je ne vois pas de situation où vous pourrez les implémenter et ne pas pouvoir ajouter des champs masqués.

0
Amit 26 sept. 2011 à 13:38

Vous devez utiliser un contrôle côté serveur pour le faire (tel que HiddenField ou span caché avec runat = "server").

<% = Session ["hdnAccession"]%> n'évaluera que la première fois que vous entrerez dans la page, pas pendant les publications.

1
Svarog 26 sept. 2011 à 13:14