Label der Web Site wird nicht automatisch aktualisiert
-
Hallo C#per,
da ich normalerweise in C++ programmiere, benötige ich hier mal etwas Hilfe.
Ich benötige für ein Projekt eine einfache Web Site, die ein paar Daten anzeigen soll. Da C# C++ ähnelt, habe ich diese Sprache hierfür gewählt, aber leider funzt das nicht alles so easy wie bei c++.
Mein Problem:
Die Seite ist bez. der Grafik fertig, jetzt muss sie nur noch aktualisiert werden. Auf der Web Site gibt es eine Uhr, die ganz einfach mit DateTime versorgt wird und sollte somit im Sekundentakt mitlaufen.Die Uhr wird, wenn man die Seite aufruft, einmal aktualisiert, dann aber nicht mehr, zumindest nicht durch meinen eingebauten Timer.
Die Aktualisierung findet erst statt, wenn die Seite erneut geladen wird.Hier mein doch recht einfacher Code:
using System; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Timers; public partial class _Default : System.Web.UI.Page { public System.Timers.Timer aTimer; public System.DateTime aktDate; public void Page_Load(object sender, EventArgs e) { aTimer = new System.Timers.Timer(1000); aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); aktDate = DateTime.Now; LabelAktuelleZeitAnzeige.Text = Convert.ToString(aktDate); aTimer.Enabled=true; } private void OnTimedEvent(object sender, ElapsedEventArgs e) { aktDate = DateTime.Now; LabelAktuelleZeitAnzeige.Text = Convert.ToString(aktDate); } protected void ButtonSiteUpdate_Click(object sender, EventArgs e) { } }
Die Aktualisierung des Labels, dass die Uhrzeit auf der WebSite darstellt, funktioniert, zumindest im Code kann man das erkennen, dass das Label immer aktualisiert wird. Das wird mit dem Timer gemacht.
Wie bekommt man das hin, dass die Uhr auf der WebSite immer aktuell mitläuft?
Gruß
DanielK.
-
Du hast da leider einen Denkfehler gemacht.
Dein Code läuft auf dem Server, wenn du das Label also immer aktualisieren willst muss der Clientbrowser jedes mal eine neue Verbindung zum Server auf machen und sich die Seite neu abholen (was unter Umständen deinen Server sehr belastet).
Willst du so etwas machen wie eine Uhr die jede Sekunde Tickt solltest du etwas nehmen das auf dem Client läuft. Javascript wäre eine Möglichkeit.
Auch wäre es möglich ein HTML Tag in die Seite einzubauen der die Seite jede Sekunde Aktualisiert (was aber höchst wahrscheinlich für den User und für den Server eher ungut ist).
Bei Javascript würde dann allerdings die Uhrzeit die der User am System hat angezeigt. Wenn du ihm die Serverzeit anzeigen willst, kannst du deinem Script die Serverzeit übergeben und das Script zählt dann jede Sekunde um 1 hoch
-
Der Ablauf deiner Webseite ist so:
Client an Server ,sende mir die Webseite
Server sendet Webseite mit Uhrzeit
Client krieg Webseite und zeigt die an
Server ändert die Uhrzeit auf der Webseite
Client zeig immer noch die alte Webseite an,da er keine neu angefordert hat
.....Du könntest die Seite jede Sekunde neu laden oder javascript für deine Uhr verwenden.
Edit:
Da war jemand schneller.
-
Hi Freunde,
danke für die genauen Informationen.
Ok, sowas ähnliches habe ich vermutet, war mir nur nicht abschließend sicher, ob es nicht doch ein Lösung gibt.
Ich habe die Uhr auf der Seite gelassen, sie beschreibt nun allerdings nur noch, wann die Seite zuletzt aktualisiert wurde, und läuft natürlich nicht mit.
Vielen Dank, dass Ihr Euch für mich Zeit genommen habt.
MFG
DanielK.