Ich habe eine Basismasterseite, die die Hauptlayoutvorlage einer Website angibt. Es behandelt auch einige Logik, die Registerkarten abhängig von dem Abschnitt ändert, und legt außerdem Seitenmetainformationen fest.Dynamisch verschachtelte Masterseiten, gemeinsame Eigenschaften
Ich lade verschachtelte Masterseiten dynamisch, indem ich den Querystring betrachte, einen Datensatz aus der Datenbank hochlade und die verschachtelte Masterseite dynamisch auf der Grundlage eines Wertes festlege, der in diesem Datensatz gefunden wurde. Ich muss dynamisch verschachtelte Masterseiten für Layout und funktionale Unterschiede laden.
Es gibt zusätzliche Informationen in diesem Datensatz, die ich in der Basismasterseite und in der dynamisch geladenen Masterseite verwenden möchte, damit ich zusätzliche Datenbankaufrufe vermeiden kann.
Derzeit habe ich eine Klasse eingerichtet, die MasterPage als Basisklasse für die Basismasterseite erbt. Ich habe eine gemeinsame (statische) Eigenschaft, die das Objekt enthält, das den Datenbankaufruf darstellt, den ich zwischen der Basismasterseite und der verschachtelten, dynamisch aufgerufenen Masterseite freigeben möchte.
Es funktioniert, aber es scheint ein wenig hässlich. Gibt es noch andere bessere Lösungen?
Ja, das würde funktionieren, aber soweit ich weiß, Sie verlieren starke Typisierung (ohne etwas zusätzliche Arbeit). – ScottE
Ich habe in der Regel Situationen umgebrochen, in denen ich Objekte über die HttpContext.Items-Auflistung mit einer statischen Eigenschaftenklasse oder einer Instanzklasse übergeben muss. Das heißt, ich hätte so etwas wie eine ContextItems-Klasse, die eine Eigenschaft für die Daten hat, die ich in Elemente einfüge. Ich tippe dort hinein, um die Daten aus der Items-Sammlung als eingetippte Klasse zurückzugeben. –