UserControl und CustomControls per web.config verfuegbar machen
In grösseren Projekten sammeln sich im optimalen Fall natürlich auch eine grosse Menge an Controls an.
Diese müssen im Normallfall per Register Direktive in jeder ASPX Seite registriert und somit verfügbar gemacht werden.
Es ist ab ASP.NET 2.0 aber auch möglich, die Controls per web.config Global zu registrieren.
Das hat den Vorteil, das die Registrierung auf jeder Seite entfällt.
Es ergeben sich dabei auch keine Nachteile, denn per Intellisense sieht man auch sofort, welche Controls verfügbar sind.
Ein UserControl bezieht sich immer auf eine physisch vorhandene Datei, deshalb muss ein UserControl ein wenig anders registriert werden, als ein CustomControl. Folgend zeige ich beide Wege auf.
Allgemein
Wir editieren in der web.config den Zweig <system.web>, bei einem neuen Projekt sind die benötigten Unterzweige noch nicht vorhanden.
Als Grundlage verwenden wir die folgende Dekleration:
<system.web>
<pages>
<controls>
</controls>
</pages>
[...]
UserControls verfügbar machen
Für UserControls werden drei Attribute benötigt.
tagPrefix ist - wie der Name schon sagt - der Präfix des Controls. Bei Original ASP.NET Controls ist das asp.
tagName bestimmt den Namen des Controls im deklerativen Code.
src gibt die Quell ASCX Datei des Controls an.
Beispieldeklaration:
<controls>
<add tagPrefix="t4m" tagName="TestUserControl" src="~/UserControls/TestUserControl.ascx" />
</controls>
Das Tilde Zeichen repräsentiert den Root Pfad des Projektes.
In diesem Fall befindet sich die ASCX Datei im folgenden Pfad: <Projektroot>/UserControls/
CustomControls verfügbar machen
Ja, bei CustomControl sind auch drei, jedoch andere :-)
- tagPrefix
- namespace
- assembly
tagPrefix (siehe oben)
namespace gibt den Namespace an, in dem das Control zu finden ist
assembly gibt den Assembly Namen des Controls an (Meist der Name des Controls)
Beispieldeklaration:
<controls>
<add tagPrefix="t4m" namespace="t4m.Controls" assembly="TestCustomControl" />
</controls>
Ab dem Moment an dem die web.config gespeichert wurde, wird auch Intellisense in Visual Studio für die Controls aktiv:
Anbei findet ihr noch ein Beispiel zum Download.
Das beinhaltet eine Web Applikation mit einem User- und CustomControl.
Beim CustomControl ist noch darauf zu achten, das eine Referenz auf das Projekt bzw. die Dll zu erledigen ist, bevor das Control erkannt wird.
Via Kai und Kai :-)