In einem Web Site Projekt, wenn ich einen Verweis auf eine Benutzerkontrolle auf den Markup einer Seite oder Steuerelement hinzufügen, wie so:Erstellen von Programmgesteuertes eines User Control in einem webanwendungsprojekt
<%@ Reference Control="~/controls/myUserControl.ascx" %>
dann
ASP.controls_myUserControl_ascx myControlInstance =
new ASP.controls_myUserControl_ascx();
jedoch in einem Web Application Projekt: ich kann programmatisch eine Instanz dieser Steuerung von dem Code-Behind mit dem automatisch generierten ASP
Namensraum Ich erhalte einen Kompilierungsfehler. This comment auf MSDN schlägt vor, dass es einfach nicht in einem Webanwendungsprojekt funktioniert, schlägt jedoch keine Alternative vor.
Ich kann eine Instanz der Klasse erstellen, die als so hinter der Benutzersteuerung vorhanden ist:
MyWebApplication.controls.myUserControl myControlInstance
= new MyWebApplication.controls.myUserControl();
aber dies schließt nicht das Markup (oder all serverseitigen Steuerelemente) von der ASCX-Datei, das nützt also nichts.
Ich kann eine Steuerung mit dem Markup instanziiert wie so:
MyWebApplication.controls.myUserControl myControlInstance
= LoadControl("~/controls/myUserControl.ascx")
as MyWebApplication.controls.myUserControl;
, die mir alle Eigenschaften können zugreifen und scheint ganz gut zu funktionieren. Aber es scheint ein wenig unangenehm zu sein, das Steuerelement aus seinem String-Pfad zu laden, wenn ich eine stark typisierte Klasse in einem anderen Projekttyp verwenden könnte.
So ist meine Frage: gibt es eine bessere Möglichkeit, ein Benutzersteuerelement in einem Webanwendungsprojekt programmgesteuert zu erstellen? Oder stecke ich mit LoadControl
fest?
-1: verdient Argument (en) – Askolein
wie meinst du? Die Frage war nicht, wie man loadcontrol benutzt .... – FiveTools