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
.
3 réponses
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
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.
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.
Questions connexes
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.