Untergeordnete Steuerelemente sind null, wenn das Benutzersteuerelement programmgesteuert über LoadControl (Type, object []) geladen wird

8

Ich lade ein Benutzerprogramm wie folgt:

%Vor%

mit diesem Konstruktor:

%Vor%

Das Problem, das ich habe, ist, dass alle Steuerelemente in meinen Benutzersteuerelementen null sind, muss ich noch etwas anderes tun, um die untergeordneten Steuerelemente zu laden?

    
ryudice 11.02.2010, 00:20
quelle

1 Antwort

17

Dies ist beabsichtigt. Eine .ascx-Datei erbt tatsächlich von der CodeBehind-Klasse, daher ist .ASCX ein abgeleiteter Typ der CodeBehind-Klasse.

Dies bedeutet, dass beim Laden der übergeordneten CodeBehind-Klasse mit der Methode LoadControl(Type, object[]) die im CodeBehind definierte übergeordnete Klasse und nicht die abgeleitete Klasse .ascx, die die untergeordneten Steuerelemente enthält, instanziiert wird.

Wenn Sie die Page.LoadControl(string) -Überladung verwenden, funktioniert sie wie gewünscht, da sie die Vorlage richtig finden, die kompilierte .ascx-Klasse finden und laden kann.

Die andere Alternative besteht darin, alle Steuerelemente in Ihrer ASCX-Datei zu instanziieren, indem Sie den Code-Behind anstelle des Markups verwenden.

    
womp 11.02.2010, 00:34
quelle

Tags und Links