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.