Laden...

Basiseigenschaften in neues Objekt kopieren

Erstellt von naumann vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.212 Views
N
naumann Themenstarter:in
61 Beiträge seit 2005
vor 17 Jahren
Basiseigenschaften in neues Objekt kopieren

Hallo,

ich bin grad dabei ein mir eine WebControl zu schreiben. Dabei benutze ich eine Table zur Darstellung. Ich zeig euch mal wie das Objekt aussieht.


public class Menu : WebControls {

public MenuItemCollection Items
{
get {return (MenuItemCollection) ViewState["Items"];}
set {ViewState["Items"] = value;}
}

}

public class MenuItem: WebControl, IPostBackDataHandler {

public MenuItem ParentItem
{
get {return (MenuItem) ViewState["ParentItem"];}
set {ViewState["ParentItem"] = value;}
}

public string Text
{
get {return (string) ViewState["Text"];}
set {ViewState["Text"] = value;}
}


}

Meine Menü Unterelemente werden aus den Items der MenuItemCollection erstellt (Sammlung von MenuItem). Da MenuItem von WebControl erbt hat er auch alle Eigenschaften wie CssClass und die ganzen Styles. Wie kann ich den Anteil von WebControl aus MenuItem in die TableCell kopieren?

Ich will nähmlich nicht alle Eigenschaftswerte von MenuItem nach TableCell zuweisen, das ist ziemlich viel schreibarbeit 😁 .

Gibt es da eine Möglichkeit?

C
1.215 Beiträge seit 2004
vor 17 Jahren

Du musst die Render-Methoden in der richtigen Reihenfolge aufrufen...

**
TableCell.RenderBeginTag
MenuItem.RenderControl
TableCell.RenderEndTag**

Übrigens...
Du solltest niemals so komplexe Objekte im ViewState ablegen, das ist absolut inflationär.
Schau Dir mal den genrierten Output an - durch das Abspeichern gesamter Objekte sollte er bereits bei wenigen MenuItems gewaltig sein.
Es reicht absolut, wenn Du den Items eine ID gibst oder einen Index und lediglich diese Werte im ViewState überträgst.
Dann überschreibst Du die Methoden LoadViewState und SaveViewState, und bastels Dir aus den übertragenen Parametern in der ersten Methode Dein Objekt wieder zusammen.

Grüsse