AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASP.NET und OOP ?

Ein Thema von Christof · begonnen am 24. Mär 2005 · letzter Beitrag vom 6. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#1

ASP.NET und OOP ?

  Alt 24. Mär 2005, 23:04
Hallo,

ich habe folgendes Problem:

Ich habe ein kleines Testprojekt mit Delphi 2005 und ASP.NET angelegt.
Besteht aus 1 aspx Seite und eine Klasse Kunde nun folgender Code:

Code:
public class WebForm1 : System.Web.UI.Page
   {
      protected System.Web.UI.WebControls.Button button1;
      protected System.Web.UI.WebControls.Button button2;
      protected System.Web.UI.WebControls.Label label1;

      private Kunde k1;

      private void Page_Load(object sender, System.EventArgs e)
      {
         // Hier Code zum Initialisieren der Seite einfügen
      }

      #region Vom Web-Formular-Designer erzeugter Code
      override protected void OnInit(EventArgs e)
      {
         //
         // CODEGEN: Dieser Aufruf ist für den ASP.NET-Webformular-Designer erforderlich.
         /// <summary>
         InitializeComponent();
         base.OnInit(e);
      }
      
      /// <summary>
      /// Erforderliche Methode zur Unterstützung des Designers -
      /// ändern Sie die Methode nicht mit dem Quelltext-Editor
      /// </summary>
      private void InitializeComponent()
      {
         this.button1.Click += new System.EventHandler(this.button1_Click);
         this.button2.Click += new System.EventHandler(this.button2_Click);
         this.Load += new System.EventHandler(this.Page_Load);
      }
      #endregion

      private void button1_Click(object sender, System.EventArgs e)
      {
         k1 = new Kunde();
         k1.name = "Kurt";
      }

      private void button2_Click(object sender, System.EventArgs e)
      {
         label1.Text = k1.name;
      }
Also 2 Buttons auf dem Webform und ein Label.

Es wird bei Button1 Klick ein neues Kundenobjekt erzeugt und Kurt zugewiesen.
Beim Button2 klick bekomme ich allerdings die Fehlermeldung:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt ????

Was mache ich falsch bzw. wie muss ich es machen damit das funktioniert?
Bei einem Windows Form funktioniert das!

Danke im Voraus.


Gruß
Christof
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: ASP.NET und OOP ?

  Alt 24. Mär 2005, 23:47
Ein Windowsform bleibt aber auch am Leben. Bei einem WebForm bekommst du mit jedem Aufruf eine neue Instanz.
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#3

Re: ASP.NET und OOP ?

  Alt 25. Mär 2005, 00:03
Aha mal wieder was gelernt,

aber wie kann ich das Problem dann lösen?


Gruß
Christof
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: ASP.NET und OOP ?

  Alt 25. Mär 2005, 00:30
Über den ViewState zum Beispiel.
Dabei werden diese Infos verschlüsselt als Hidden fields übergeben und wieder ausgelesen.
Das setzt natürlich voraus, dass die Klasse als Serializable delariert ist.
Code:
//
   [Serializable]
   public class Kunde
   {
      string name;

      public string Name
      {
         get   { return name; }
         set   { name = value;   }
      }

      public Kunde(string   name)
      {
         this.name =   name;
      }
   }
Deinem WebForm kannst du diese property verpassen.
Code:
//
      public Kunde Kunde
      {
         get   { return (Kunde) ViewState["Kunde"]; }
         set   { ViewState.Add("Kunde", value); }
      }
Greifst du oft auf den Wert zu kannst du ihn in jedem PostBack in eine richtige Instanz ablegen:
Code:
//
        Kunde kunde;

        void Page_Load(object sender, EventArgs e)
        {
            kunde = (Kunde) ViewState["Kunde"];
        }
       
        public Kunde Kunde
        {
            get { return kunde; }
            set
            {
                kunde = value;
                ViewState.Add("Kunde", kunde);
            }
        }

        void Button1_Click(object sender, EventArgs e)
        {
            Kunde = new Kunde("Kurt");

        }

        void Button2_Click(object sender, EventArgs e)
        {
            if (Kunde != null)
            {
                Label1.Text = Kunde.Name;
            } else
            {
                Label1.Text = "nüscht";
            }
        }
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#5

Re: ASP.NET und OOP ?

  Alt 25. Mär 2005, 00:40
Zitat von Robert_G:
Über den ViewState zum Beispiel.
Dabei werden diese Infos verschlüsselt als Hidden fields übergeben und wieder ausgelesen.
Das setzt natürlich voraus, dass die Klasse als Serializable delariert ist.
Code:
//
   [Serializable]
   public class Kunde
   {
      string name;

      public string Name
      {
         get   { return name; }
         set   { name = value;   }
      }

      public Kunde(string   name)
      {
         this.name =   name;
      }
   }
Deinem WebForm kannst du diese property verpassen.
Code:
//
      public Kunde Kunde
      {
         get   { return (Kunde) ViewState["Kunde"]; }
         set   { ViewState.Add("Kunde", value); }
      }
Greifst du oft auf den Wert zu kannst du ihn in jedem PostBack in eine richtige Instanz ablegen:
Code:
//
        Kunde kunde;

        void Page_Load(object sender, EventArgs e)
        {
            kunde = (Kunde) ViewState["Kunde"];
        }
       
        public Kunde Kunde
        {
            get { return kunde; }
            set
            {
                kunde = value;
                ViewState.Add("Kunde", kunde);
            }
        }

        void Button1_Click(object sender, EventArgs e)
        {
            Kunde = new Kunde("Kurt");

        }

        void Button2_Click(object sender, EventArgs e)
        {
            if (Kunde != null)
            {
                Label1.Text = Kunde.Name;
            } else
            {
                Label1.Text = "nüscht";
            }
        }

Extrem coole Lösung, vielen thx du bist ein Gott

Was sind denn die Bedigungen für Serializable in .NET?
Aber was mache ich wenn die Klasse nicht Serializable ist bzw. nicht gemacht werden kann?


Gruß
Christof
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: ASP.NET und OOP ?

  Alt 25. Mär 2005, 01:40
Zitat von Christof:
Was sind denn die Bedigungen für Serializable in .NET?
Aber was mache ich wenn die Klasse nicht Serializable ist bzw. nicht gemacht werden kann?
Generell gibt es kaum Einschränkungen...
Willst du aber zum Beispiel irgendwann "Kunde" zu einem Xml serialisieren, musst du einen parameterlosen Konstruktor haben.
Willst du ein Paar Properties nicht serialisieren -> einfach mit einem [NonSerialized] versehen.

Nachtrag:
me...
Generell gibt es kaum Einschränkungen...

Das muss ich etwas genauer ausdrücken...
Serialisation hat kaum Einschränkungen, der ViewState schon! Du solltest dort wirklich nur kleine Datenmengen reinpacken.
Schließlich wird er ja immer hin- und hergeschickt.
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#7

Re: ASP.NET und OOP ?

  Alt 25. Mär 2005, 11:59
Vielen Dank!

Das ist sehr gut aus, dann werde ich es mal so mit meinem umfangreicheren Projekt probieren.

Gruß

Christof
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#8

Re: ASP.NET und OOP ?

  Alt 6. Apr 2005, 13:00
Du könntest dein Objekt auch in der Session ablegen. Also Session['kunde'] statt ViewState['kunde'], dann muss es auch nicht serialisiert werden.
  Mit Zitat antworten Zitat
Christof

Registriert seit: 15. Jan 2003
Ort: Saarland
97 Beiträge
 
Delphi 2005 Architect
 
#9

Re: ASP.NET und OOP ?

  Alt 6. Apr 2005, 13:34
Hat funktioniert danke.

Habe es mit der Session realisiert.


Gruß
Christof
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: ASP.NET und OOP ?

  Alt 6. Apr 2005, 13:48
Wer in Kassel war kontne es dort direkt life sehen.
Was im ViewState sitzt ist "kompatibel" mit vor/zurück im Browser. Die Session variablen halt für die ganze Session.


btw: Ich wählte den ViewState als Beispiel, weil er einem relativen .Net Newbie (sind wir nicht alle .Net NewBies? ) gleich noch serializing aufzwingt und dadurch vertrauter macht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz