Zugriff auf C # Variable von Javascript?
-
16-09-2019 - |
Frage
In meiner MS SQL-Tabelle, las ich in einem "time_zone" für eine Stadt aus einem Datensatz.
Ich mag dann in einer Javascript-Funktion diese Zeitzone verwenden, um eine digitale Uhr für die Stadt zu schaffen.
Zur Zeit versuche ich, die time_zone Variable setzen von
Hier ist ein Codeausschnitt aus 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>
Der einzige C # ich in meinem Default.aspx.cs haben für lautet:
hiddenZone.Value=timeZone;
Ich habe überprüft, und die Zeitzone hat den aus der Datenbank gelesen korrekten Wert.
Die Fehlermeldung, die ich von der JS in der „Showtime“ Funktion erhalten ist: „hiddenZone ist nicht definiert“
Wie kann ich die „timezone“ C # Variable in mein Javascript bekommen und es für die Funktion verwenden?
Lösung
Sie müssen prüfen, gegen die hiddenZone ClientID.
function showtime() {
zone(
document.getElementById('<%=hiddenZone.ClientID%>'),
clock
);
}
ASP.NET erstellt einen neuen Namen für Objekte, die es auf der HTML-Seite erstellt, so dass sie nicht das gleiche sein wie das, was Sie die ID angeben zu sein.
Andere Tipps
Sie können Ihren vorhandenen Code verwenden, indem Sie ersetzen:
function showtime() {
zone(hiddenZone, 'clock');
}
mit
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');
}
Ich bin mir nicht sicher, was Ihre ‚Zone‘ Funktion entweder der Fall ist. Aber so etwas wie dies kann man in der richtigen Richtung, wenn Sie auch Schwierigkeiten haben, werden mit ihm auch:
function zone(tz, dispID) {
var elem = document.getElementById(dispID);
// if you are using ASP.NET AJAX use:
// var elem = $get(dispID);
elem.innerHTML = tz;
}
Alternativ kann, wenn es sich um ein öffentliches Eigentum auf Ihrer Seite können Sie Ihr Verweis auf die asp entfernen: Hidden und einfach verwenden:
function showtime() {
zone(<%= MyFormsTimeZoneProperty %>, clock);
}
Legen Sie es in Server-Seite-Tags
function showtime() {
zone('<%= hiddenZone.Value %>',clock);
}