2010-12-10 17 views
0

Ich möchte ein Komponentensammlungsprojekt erstellen, damit ich diese Komponenten später in anderen Projekten verwenden kann. Zum Beispiel habe ich ein Usercontrol MyDataGrid.ascx genanntProgrammgesteuertes Laden eines Benutzersteuerelements aus einem anderen Projekt

So die Projekte Layout annehmen, sind so etwas wie folgt aus:

->IPGostarProject - Unter Namensraum von IPGostar - enthält Komponenten und viel von Benutzersteuerungen

->Sample - hier möchte ich MyDataGrid.ascx Usercontrol von IPGostar Namensraum verwenden.

Aber wie Sie wissen, nimmt die LoadControl-Funktion nur das virtuelle Verzeichnis als Parameter. Sie können also nichts außerhalb des SampleProject-Verzeichnisses laden!

Also wie kann ich das tun?

Antwort

0

Eine Möglichkeit wäre, dass das Post-Build-Ereignis (oder das von Ihnen verwendete Build-Skript) des SampleProject-Projekts die aktuellen Benutzersteuerelemente in einen Unterordner von SampleProject kopiert, damit sie zur Laufzeit verfügbar sind.

0

Solange es sich um partielle Klassen handelt, gibt es keine gute Möglichkeit, dies außerhalb von Dateisystemtricks zu tun. Ein besserer Weg besteht darin, gemeinsam genutzte Benutzersteuerelemente als Websteuerelemente zu implementieren. Wenn Sie umfangreiche Markup haben, ist es wahrscheinlich nicht gut geeignet, um ein gemeinsames Steuerelement zu sein, sowieso ... z. wirst du auch das Stylesheet teilen?

Trennen Sie die Mehrzahl der Markups, die nicht zur Kernfunktionalität Ihres Steuerelements gehören, und implementieren Sie nur den Kern als WebControl, indem Sie Markups und Steuerelemente im Code generieren. Das eigentliche Projekt, das es implementiert, sollte für Layout, Formatierung usw. verantwortlich sein. Verwenden Sie Ereignisse, um dem Client Hooks bereitzustellen (z. B. für ein Datenraster, Ereignisse für CreateRow, CreateCell usw.)

Verwandte Themen