Accéder à la variable C # à partir de Javascript?

Dans ma table MS SQL, j'ai lu dans un "time_zone" une ville d'un logging.

Je veux ensuite utiliser ce timezone dans une fonction Javascript pour créer une horloge numérique pour cette ville.

Actuellement, j'essaie de définir la variable time_zone de

Voici un extrait de code de Default.aspx:

function showtime() { zone(hiddenZone,clock); } window.onload = showtime; </script> </head> <body> <form id="form1" runat="server"> <div> <span id="clock"></span> <asp:HiddenField ID="hiddenZone" runat="server" /> <asp:Label Text="" ID="lblXml" runat="server"></asp:Label> </div> </form> </body> </html> 

Le seul C # que j'ai dans mon Default.aspx.cs est:

 hiddenZone.Value=timeZone; 

J'ai vérifié et timeZone a la valeur correcte lue dans la database.

Le message d'erreur que je reçois du JS dans la fonction "showtime" est: "hiddenZone is undefined"

Comment puis-je get la variable "timeZone" C # dans mon Javascript et l'utiliser pour la fonction?

Vous devez vérifier le code client hiddenZone.

 function showtime() { zone( document.getElementById('<%=hiddenZone.ClientID%>'), clock ); } 

ASP.NET crée un nouveau nom pour les objects qu'il crée sur la page HTML, ils ne seront donc pas les mêmes que ceux que vous spécifiez.

Vous pouvez utiliser votre code existant en remplaçant:

 function showtime() { zone(hiddenZone, 'clock'); } 

avec

 function showtime() { var elem = document.getElementById('<%= hiddenZone.ClientID %>'); // if you are using ASP.NET AJAX use: // var elem = $get('<%= hiddenZone.ClientID %>'); zone(elem.value, 'clock'); } 

Je ne suis pas sûr de ce que fait votre fonction 'zone'. Mais quelque chose comme ça peut vous orienter dans la bonne direction si vous avez aussi des difficultés avec cela:

 function zone(tz, dispID) { var elem = document.getElementById(dispID); // if you are using ASP.NET AJAX use: // var elem = $get(dispID); elem.innerHTML = tz; } 

Sinon, s'il s'agissait d'une propriété publique sur votre page, vous pouvez supprimer votre reference à asp: HiddenField et utiliser simplement:

 function showtime() { zone(<%= MyFormsTimeZoneProperty %>, clock); } 

Mettez-le dans les tags côté server,

  function showtime() { zone('<%= hiddenZone.Value %>',clock); }