Vraagje VB.NET

Status
Niet open voor verdere reacties.

XenomX

Gebruiker
Lid geworden
27 apr 2002
Berichten
822
Post het hier maar even (Komen wat meer mensen.)

Ik heb een soort Login pagina gemaakt, waarneer er correct is ingelogd word Login op True gezet, alleen nu heb ik Dim Login as Boolean maar nu onthoud hij deze niet in andere Webforms.
Met Visual Basic was dit met Global Login as Boolean, dan onthoud hij het wel in andere Forms.

Weet iemand hoe ik dit met ASP.NET via VB.NET kan doen?

Heel erg veel dank! :thumb:
 
...

Heb al iets met Dim Login as Global.

Maar nu kan ik het geen waarde geven zoals True of 1 etc.

:thumb:
 
Hey X,

Het punt is dat bij asp.net na het klikken op een asp.net webcontrol alle waardes opnieuw worden geinitialiseerd. Hier zijn 2 oplossingen voor voor 2 verschillende situaties. Je kan gebruik maken van een waarde die als static is gedefinieerd, of je maakt gebruik van Sessions.

Voorbeeld (C#):

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace testplace
{
    public class _AndereClass
    {
        public static Boolean IsDezeBooleanBereikbaar;

        public static Boolean GetSetIsDezeBooleanBereikbaar
        {
            get { return IsDezeBooleanBereikbaar; }
            set { IsDezeBooleanBereikbaar = value; }
        }
    }

   public class _default : System.Web.UI.Page
   {
      public _default()
      {
            // Is de Session nog niet geinitialiseerd dan wijzen we nu de waarde true toe
            if (Session["BewaarDezeBoolean"] == null)
            {
                Session["BewaarDezeBoolean"] = _AndereClass.IsDezeBooleanBereikbaar = true;
            }
            else
            {
                // Benader via propertie
                _AndereClass.GetSetIsDezeBooleanBereikbaar = false;

                // Session["BewaarDezeBoolean"] heeft nu de waarde true
                // De static boolean van de classe _AndereClass is nu false
                
                // Je kan de static waarde direct benaderen
                _AndereClass.IsDezeBooleanBereikbaar = (Boolean) Session["BewaarDezeBoolean"];

                // Session["BewaarDezeBoolean"] heeft nu de waarde true
                // De static boolean van de classe _AndereClass is nu true
            }
      }
   }
}

Als er nog vragen zijn dan hoor ik het wel.
 
Hey X, vb.net is niet mijn taal maar toch heb ik geprobeerd op jouw verzoek het script in C#.NET te vertalen naar VB.NET het gaat om het sleutelwoord Shared (vb.net) of static (C#.net) in samen hang met het object Session hier een voorbeeld maar dan in vb.net:


Public Class WebForm1
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' De eerste keer dat de Page_Load wordt aangeroepen is de Session("session") gelijk aan Nothing
        ' waardoor de classe B wordt aangeroepen, met daarbij de statische (Shared) Functie "setSharedValueInClassA"
        ' die op zijn beurt de statische waarde in de class A insteld
        ' Bij een volgende aanroep haalt hij de waarde niet op vanuit de class A maar vanuit de Session
        ' doordat we gebruik maken van het Session object blijft deze bestaan in het geheugen van de server
        ' tot het moment dat de bezoeker zijn browser verlaat, in dat geval wordt de garbage collector aan het
        ' werk gezet om alle variable welke zijn aangemaakt in de sessie van de bezoeker op te ruimen.

        ' Ik heb gebruik gemaakt van 2 webcontrols namelijk een Label en een Button
        ' Bij de eerste Page_Load krijgt de Label de tekst vanuit de waarde van sValue in de classe A
        ' Na het drukken op de button, wordt in de btnTest_Click (onclick eventhandler) de waarde van
        ' sValue in classe A gewist, maar deze blijft bestaan in de session. Bij een volgende Page_Load ziet 
        ' hij dat de Session("session") niet gelijk is aan Nothing zodoende haalt hij de waarde uit deze sessie
        ' Leuk om te weten is dat een Session niet afhankelijk is van een classe, elke classe kan opgeslagen waardes
        ' via Session() ophalen en verder gebruiken, ik hoop dat het een beetje duidelijk overkomt

        If Session("session") <> Nothing Then
            TestLabel.Text = Session("session")
        Else
            B.setSharedValueInClassA("Dit is een test")
            TestLabel.Text = A.sValue
            Session("session") = A.sValue
        End If

    End Sub

    Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
        A.sValue = Nothing
        TestLabel.Text = Session("session")
    End Sub
End Class

Public Class A

    Public Shared sValue As String

    Public Shared Function testIt() As String
        Return sValue
    End Function

    Public Shared Sub F()

    End Sub

End Class

Public Class B

    Shared Function setSharedValueInClassA(ByVal s As String)
        A.sValue = s
    End Function

End Class

:thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan