DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Von Page zu Page:wo bleiben meine Daten?

Die typische Webanwendung besteht aus mehr als einer Seite. Oft sind die Formulare so gross, das sie sich über mehrere Seiten erstrecken müssen. Nun stellt sich die Frage wie gebe ich die Daten von Seite zu Seite weiter?
Grundsätzlich können Sie den bisherigen Weg beschreiten und die benötigten Daten in Session Variablen ablegen. Auch für den Sprung auf die nächste Seite können Sie den guten alten Response.Redirect verwenden.
Wenden wir uns aber anderen vielleicht neuen Methoden zu, die ASP .NET bietet. Grundsätzlich werden alle Objekte freigegeben, sobald die Seite beim Benutzer angezeigt wird. Die Seite hat also kein Gedächtnis. Nun wäre naheliegend, wenn Sie der Page Klasse ein Proberty verpassen, das ich dies weiter nutzen kann. Dies funktioniert auch allerdings nur, wenn der Zusatz Shared verwendet wird.

Public Class makeRes
    Inherits System.Web.UI.Page
    Public Shared myStr As String
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        myStr = myStr + "1"
        Response.Write(myStr)
    End Sub
End Class

Das Ergebnis ist eine wachsende Einserkette im Brodiewser. Was passiert, wenn ein anderer User diese Seite aufruft? Sie teilen sich die Variable myStr und beide addieren auf diese. Dies zeigt auch wie ASP .NET und die Garbage Collection arbeitet. Die Klasse wird nur einmal instanziert. Das Verhalten ähnelt daher einer Application Variablen. Auch der Zugriff von anderen Seiten aus funktioniert über die Seitenklasse.
Response.Write(makeRes.myStr)

Nur um einen Gedankenansatz zu geben, wie man komplexere Daten speichern könnte. Dazu erstellen Sie eine Klasse ( in einem Modul), die z.B. die Daten in einem SQL Server ablegt. Dann können Sie in Ihrer Page Klasse ein Objekt von diesem Typ erstellen. Die Details dazu werden an anderer Stelle beschrieben.

Nur zur Ergänzung der klassische ASP Weg.
Session("myVar")=textbox1.text
response.redirect("page2.aspx")

Das Auslesen funktioniert auf der Page2 ganz einfach.
Response.write(Session("myVar"))

Als alternativer Wege funktionieren für den Variablentransport die gängigen Verfahren wie URL, Hidden Field und Cookie. Im Gegensatz   zur Session Variable ist dies allerdings Stateless.

Allerdings sollte man sich überlegen, ob man nicht die neuen Möglichkeiten von ASP .NET nutzen sollte. Hier bieten sich z.B. die Panels an. Über diese kann man Controls gruppieren und die Anzeige der kompletten Gruppe ein und ausschalten. Zum Wechseln werden in diesem Beispiel Linkbuttons verwendet. Die Panels werden dann wechselweise angezeigt.

Natürlich will ich auch den Code nicht verheimlichen obwohl er nicht besonders spannend ist.

Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click
        LinkButton1.BorderStyle = BorderStyle.None
        LinkButton2.BorderStyle = BorderStyle.Dashed
        Panel2.Visible = True
        Panel1.Visible = False
    End Sub

    Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
        LinkButton2.BorderStyle = BorderStyle.None
        LinkButton1.BorderStyle = BorderStyle.Dashed
        Panel1.Visible = True
        Panel2.Visible = False
End Sub

Spannender ist schon wie es sich mit den eingegebenen Werten verhält. Beim Wechsel der Panels werden die Inhalte der Felder beibehalten. Auch der Zugriff auf die Inhalte der Felder erfolgt wie gewohnt über das Objektmodell. Das heisst obwohl der User die Felder nicht sieht, sind die Objekte weiter vorhanden.

Am Ende sieht die zuletzt beschriebene Lösung am elegantesten aus.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 30.11.2001
  Gültig bis: 30.12.2001
5 Ratings
Bewertung: 76,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG