2012-04-13 17 views
3

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?

Antwort

0

Mit LoadControl erstellen Sie programmatisch ein Benutzersteuerelement.

+0

-1: verdient Argument (en) – Askolein

+0

wie meinst du? Die Frage war nicht, wie man loadcontrol benutzt .... – FiveTools

Verwandte Themen