Ich versuche, ein Benutzersteuerelement in einer asp.web-Site dynamisch zu laden. Aufgrund der Tatsache, wie asp.net-Websites Projekte eingerichtet werden (ich denke), kann ich nicht auf die Typdefinition des Benutzersteuerelements zugreifen.
Ich bekomme eine Nachricht, die besagt, dass meine Klasse HE_ContentTop_WebControl1 ist: Der Typ oder Namespace-Name 'HE_ContentTop_WebControl1' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)
Irgendeine Idee, wie das funktionieren könnte? Ich habe versucht, Namespace zu verwenden, aber es scheint mir, dass asp.net-Websites nicht standardmäßig mit Namespaces arbeiten. Ich wäre an einem Nicht-Namespace-Ansatz interessiert.
TIA
%Vor%Wenn das Steuerelement in derselben Assembly wie Ihr Webprojekt vorhanden ist, müssen Sie in Ihrer ASPX-Datei eine Verweisdirektive hinzufügen,
z.B.:
%Vor%Denken Sie daran, dass es oft ein paar Minuten dauert (oder manchmal ein Build), damit IntelliSense dies übernimmt.
Es kann leicht mit Namespaces gemacht werden. Hier ist ein Beispiel:
WebControl1.ascx:
%Vor%Beachten Sie, dass Vererbt den Namespace (MyUserControls) und nicht nur den Klassennamen (WebControl1)
referenziertWebControl1.ascx.cs:
%Vor%Beachten Sie, dass die Klasse in den Namespace MyUserControls
aufgenommen wurdeDefault.aspx.cs:
%Vor%Dieser Ansatz ermöglicht es Ihnen möglicherweise, Ihre Benutzersteuerelemente neu zu verteilen (oder in einem separaten Projekt zu behalten), ohne sie in Ihren ASPX-Dateien referenzieren zu müssen.
Namespaces werden vom Websitemodell nicht unterstützt. Daher konnte ich keine der vorgeschlagenen Lösungen zum Funktionieren bringen. Es gibt jedoch eine Lösung. Erstellen Sie eine Schnittstelle und fügen Sie sie in App-Code ein, und implementieren Sie anschließend die Schnittstelle im Benutzersteuerelement. Sie können auf die Schnittstelle umwandeln und es funktioniert.
Das Thema dieses Beitrags ist ein bisschen irreführend. Wenn Sie ein Steuerelement nur dynamisch hinzufügen möchten, müssen Sie nicht auf das Steuerelement verweisen. Daher können Sie es einfach mit einem einfachen Element wie dem folgenden hinzufügen:
%Vor%ohne Namespace hassel.
Wenn Sie das Benutzersteuerelement auf diese Weise darstellen, kann dies zu vielen Problemen führen. Mein Ansatz besteht darin, eine Klasse (z. B. Steuerelementklasse) zu erstellen, alle Eigenschaften und Methoden für das Umwandeln in sie einzufügen und diese Klasse von System.Web.UI.UserControl zu übernehmen .Dann verwenden Sie in Ihrer Benutzersteuerungscodedatei anstelle von System.Web.UI.UserControl diese Steuerklasse.
Jetzt, wenn du Casting brauchst, nur mit dieser Klasse. es wird auch Licht werfen.
Die Referenz ist nicht genug mit
%Vor%in der aspx-Datei ist nur ein Teil der Antwort.
Sie müssen auch den calssName in der User Control aspx-Datei
hinzufügen %Vor%und dann können Sie den userontrol in Ihrer aspx-Datei verwenden
%Vor%