Ich erstelle Seiten dynamisch mit einer Datenbank zum Speichern der Seiteninformationen und .NET (C#) zum Erstellen von Seiten. Ein Teil dieses Prozesses besteht darin, die Masterpage (im Code-Behind) auf der Grundlage dessen zu setzen, was in der Datenbank enthalten ist, und das, wie ich es verstehe, in Page_PreInit
zu tun.Übergabe von Objekten/Variablen zwischen Page_PreInit und Page_Load
Mein Problem ist, wie Objekte und Variablen von an Page_Load
übergeben werden.
ich in der Lage gewesen, um es wie folgt funktioniert, aber zufällige Compilierung Fehler habe bei dieser Methode:
public partial class BuildPage : System.Web.UI.Page
{
protected static string pageData;
protected void Page_PreInit(object sender, EventArgs e)
{
--- SET pageData = DATA FROM DATABASE, AND SET MASTERPAGE ---
}
protected void Page_Load(object sender, EventArgs e)
{
--- USE pageData TO BUILD AND DISPLAY THE REST OF THE PAGE ---
}
}
Aus verschiedenen Gründen, ich bin nicht Visual Studio zu kompilieren die Seite verwenden, Nur lassen Sie .NET bei der Anfrage der ersten Seite spontan kompilieren. Ich habe zwei Fehlermeldungen bekommen:
1) „CS0102: Der Typ‚BuildPage‘bereits eine Definition enthält für‚Pagedata‘“
2) „ASPNET: Stellen Sie sicher, dass die Klasse in dieser Code-Datei Streichhölzer definiert Das 'erbt' Attribut und es erweitert die korrekte Basisklasse (zB Page oder UserControl). "
Das Merkwürdige ist, dass manchmal die Seite kompiliert auf der ersten Web-Anfrage. Und für jene Zeiten, die es nicht nach der ersten Anforderung nach einer zufälligen Anzahl von Seitenaktualisierungen tut, wird es perfekt kompilieren. Nach dem Kompilieren scheint alles in Ordnung zu sein, bis ich eine andere Änderung am Code vorgenommen habe und neu kompilieren muss.
Ich scheinen nur diese Kompilierungsfehler zu erhalten, wenn Sie diese Methode verwenden, um Variablen zwischen Page_PreInit
und Page_Load
zu teilen. Mit anderen Worten, wenn ich die Daten einfach zweimal von der Datenbank anfordere, einmal in "Page_PreInit" und einmal in "Page_Load", bekomme ich diese Fehler nie. Aber ich möchte die Datenbanklast lieber nicht verdoppeln.
Also meine Frage hat wirklich zwei Teile, erstens, ist das eine akzeptable Möglichkeit, Variablen zu teilen, oder gibt es eine bessere Möglichkeit, Daten von Page_PreInit
zu Page_Load
zu übergeben?
Und zweitens, wenn das ein akzeptabler Weg ist, sind die Fehler unabhängig und hat jemand ähnliche Fehler gesehen, die einfach nach wiederholten Web-Anfragen weggehen?
Danke für jede Hilfe! Futter
Testen Sie immer mit den gleichen Daten? I.e. könnte es sein, dass die pageData manchmal null ist, wenn Sie im PageLoad darauf zugreifen, weil etwas in der Datenbank fehlte? – Don
Vielen Dank für Ihre Hilfe, Sie alle hatten solide Antworten, es war der "statische" Modifikator, der das Problem war. StackOverflow.Com ist erstaunlich. –