Avatar billede columbus32 Nybegynder
13. juli 2007 - 12:42 Der er 7 kommentarer og
1 løsning

Genbruge oprettet klasse.

I min codebehind file opretter jeg en ny instans af min klassen Handler. Denne klasse rummer funktioner og attributter, men mit problem er at hver gang min default.apsx bliver afviklet så opretter den en ny instans af klassen Handler og ikke genbruger den som blev oprettet tidligere. Det medføre at diverse attributter bliver nulstillet. Hvordan får jeg oprettet og gemt min Handler klassen så den bliver genbrugt??

public partial class _Default : System.Web.UI.Page
{
    Handler myHandler;

    protected void Page_Load(object sender, EventArgs e)
    {
        myHandler = new Handler();
        if (Page.IsPostBack == false){
        }
    }
}
Avatar billede jps6kb Novice
13. juli 2007 - 13:01 #1
public partial class _Default : System.Web.UI.Page
{
    Handler myHandler;

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            myHandler = new Handler();
        }
    }
}


Sådan der ville jeg sige.
Avatar billede columbus32 Nybegynder
13. juli 2007 - 13:15 #2
Nej det medføre bare at når siden så bliver posted back så findes klassen ikke. Skal jeg ligge klassen ind i et session?
Avatar billede columbus32 Nybegynder
13. juli 2007 - 13:29 #3
Har også prøvet at oprettet min instans af klassen i global.asax, men så kan jeg ikke tilgå den fra andre sider.
Avatar billede snepnet Nybegynder
13. juli 2007 - 13:37 #4
Skal objektet (myHandler) være det samme for alle brugere (for så skal du ikke lægge det i session), eller er det unikt for hver bruger (så kan du godt benytte session).
Mvh
Avatar billede columbus32 Nybegynder
13. juli 2007 - 13:47 #5
Det skal være unikt for hver bruger så en session er en mulighed, men hvis jeg laver følgende i min global.asax:

Handler myHandler;
Session["myHandler"] = new Handler();


Så kan jeg ikke tilgå klassens metoder i andre filer med f.eks:

Session["myHandler"].getCurrentPageNumber().ToString();
Avatar billede columbus32 Nybegynder
13. juli 2007 - 14:04 #6
Fik det løst ved at smide klassen i en session i min global.asax og efterfølgende på de sider som skulle anvende klassen gør jeg følgende:

public partial class _Default : System.Web.UI.Page
{
    Handler myHandler;

    protected void Page_Load(object sender, EventArgs e)
    {
        myHandler = (Handler) Session["myHandler"];
Avatar billede snepnet Nybegynder
13. juli 2007 - 14:23 #7
Du kan også bare lave dig en property med Session som backend, og lægge den på en baseklasse for dine sider:

public Handler HandlerInstance
{
  get
  {
    if(HandlerInstance == null)
      HandlerInstance = new Handler();
    return HandlerInstance;
  }
}

Så kan du tilgå den fra alle dine forms på en lidt snildere måde.

Mvh
Avatar billede jps6kb Novice
13. juli 2007 - 14:49 #8
Jeg læste det som at det var postback du mente ;) Godt du fandt ud af det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester