Der Zugriff auf eine Eigenschaft von der übergeordneten Seite meines Benutzersteuerelements aus.
Hier ist der Anfang meiner default.asp-Codebehind:
%Vor%Hier ist der Anfang meines Benutzersteuerelements codebehind:
%Vor%Ich erhalte den Fehler "selectedID ist kein Mitglied von System.Web.UI.Page"
Bitte adivse!
Sie können auf die Eigenschaft zugreifen, wenn Sie die Seite auf Ihre tatsächliche Implementierung mit dem Namen _Default umwandeln.
%Vor%Aber das ist nicht der Zweck einer Benutzerkontrolle (Wiederverwendbarkeit). Normalerweise würden Sie die ID vom Controller (Seite) dem UserControl geben.
Definieren Sie eine Eigenschaft im UserControl und legen Sie sie auf der Seite fest. Auf diese Weise würde das UserControl auch auf anderen Seiten funktionieren.
Da das Benutzersteuerelement nicht zu der Seite gehört, können Sie nicht direkt auf es zugreifen, es sei denn, Sie legen eine Eigenschaft im Benutzersteuerelement entweder ausdrücklich von der Einschließlichsseite fest oder erstellen eine rekursive Funktion, die bis zum Ende alle übergeordneten Objekte durchläuft Es findet ein Objekt vom Typ System.Web.UI.Page
.
Als Erstes könnten Sie eine Eigenschaft (ich habe dies mit einer Eigenschaft namens ParentForm
) im Benutzersteuerelement verwendet haben:
Auf der Seite "Parent" würden Sie diese Eigenschaft so früh wie möglich in einem Ereignis festlegen. Ich bevorzuge PreLoad, weil es vor dem Laden kommt (also verfügbar ist, wenn die meisten anderen Steuerelemente es benötigen) und nach dem Init.
%Vor%Sie können auch eine Funktionstrolle über die übergeordneten Steuerelemente schreiben, um die Seite zu finden. Der folgende Code ist noch nicht getestet, daher muss er eventuell angepasst werden, aber die Idee ist gut.
%Vor% EDIT: Sie können auch nicht direkt auf diese Eigenschaft zugreifen, da sie nicht innerhalb des Typs System.Web.UI.Page
existiert. Wie von @TimSchmelter empfohlen, können Sie entweder versuchen, die Seite auf den spezifischen Seitentyp _Default
zu konvertieren, oder wenn dies für viele Ihrer Seiten normal ist, müssen Sie möglicherweise eine Basisseitenklasse erstellen und Ihre Eigenschaft in diese Klasse aufnehmen . Dann können Sie diese Klasse anstelle von System.Web.UI.Page
Dann auf der Seite:
%Vor%