ASPX: wie Variablen prozedurübergreifend übergeben?

  • VB.NET (ASP)
  • Web Pages

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Jürgen 58.

    ASPX: wie Variablen prozedurübergreifend übergeben?

    Hallo zusammen,

    vorab zu mir: ich bin schon etwas älter (genauer: als ich mein Studium abgeschlossen hatte, war gerade OOP als neue(!) Art zu Programmieren in aller Munde - gelernt habe ich das aber nie - wir haben problem- und maschinenorientiert programmiert - und das Internet und die Webprogrammierung standen noch in den Kinderschuhen). Habt daher bitte Verständnis, wenn ich hier Fragen stelle, die aus Eurer Sicht vielleicht zu einfach sind.

    Wie kann ich Aspx-Variablen prozedurübergreifend einsetzen, deren Werte aber nur im jeweils aktuellen Browser-Tab gültig sein sollen?

    Softwareentwicklung betreibe ich nebenher, es ist also nicht meine berufliche Hauptaufgabe. Bisher habe ich diverse Webtools für uns Administratoren in C# und VB entwickelt. Die funktionieren alle einwandfrei - aber nur im Single-User-Mode! Sobald jedoch mehrere User mit solch einem Tool gleichzeitig arbeiten, kommt es zu Problemen mit Variablen bzw. mit deren Werten.

    In den Tools verwende ich viele prozedurübergreifende Variablen. Nun kann ich diese ja ByRef oder ByVal übergeben. Das klappt aber nicht bei Prozeduren, die auf Events reagieren (Sub XY_Changed(ByVal sender As Object, ByVal e As System.EventArgs)). Solche Variablen definiere ich mir global, entweder mit Dim oder in einer Klasse (wobei ich bei OOP nur über mangelhafte Grundkenntnisse verfüge). Das Problem ist dann, dass nach einem AutoPostBack im Code-Behind die Werte solcher Variablen auch für andere Nutzer der Tools zur Verfügung stehen, bzw. von diesen verändert werden können.

    Um das Problem zu umgehen, speichere ich mir die Werte solcher Variablen nun in Session-Variablen ab. Das funktioniert dann nicht nur im Single-User-Mode, sondern auch im Multi-User-Mode. Allerdings gibt es auch hier ein Problem: die Session-Variablen gelten ja browserweit. Hat ein User ein solches Tool in mehreren Browser-Tabs geöffnet, dann gelten auch diese Session-Variablen bzw. deren Werte in all diesen Tabs.

    Ich hoffe, dass mein Problem verstanden wird und mir jemand einen Lösungsweg aufzeigt. Dafür bereits im Voraus meinen Dank.

    Viele Grüße
    Jürgen
    Hallo VB1963,

    herzlichen Dank für Antwort. Diese hilft mir schon einmal bei meinem Problem mit den Session-Variablen weiter.

    Für mein ursprüngliches Problem mit den prozedurübergreifenden Variablen gebe ich mal ein Beispiel:

    VB.NET-Quellcode

    1. Private Class LokaleVariablen
    2. Public Shared strTest As String = ""
    3. End Class
    4. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    5. Response.Write("<br />Test: '" & LokaleVariablen.strTest & "'")
    6. LokaleVariablen.strTest = "Test"
    7. Response.Write("<br />Test: '" & LokaleVariablen.strTest & "'")
    8. End Sub

    Ergibt beim Aufruf auf Rechner 1:
    Test: ''
    Test: 'Test'

    Und beim Aufruf auf Rechner 2 kurze Zeit später:
    Test: 'Test'
    Test: 'Test'

    Erwarten würde ich aber die gleiche Antwort wie beim erstmaligen Aufruf von Rechner 1.

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Evtl ist blazor besser und einfacher für dein Vorhaben geeignet. Dort kann eine Klasse z. B. Als singleton eingebunden werden. Jeder Browser der die entsprechende Seite geöffnet hat bekommt eine Wert Änderung angezeigt.

    dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor

    c-sharpcorner.com/article/diff…nt-and-singleton-service/

    learn.microsoft.com/en-us/aspn…ction?view=aspnetcore-7.0
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!