2010-03-05 9 views
5

Müssen wir etwas Spezielles tun, um Teilklassen von ASP.NET auf Steuerelemente aufmerksam zu machen, die in den Basisklassen unseres Benutzersteuerelements deklariert sind? Die partiellen Klassen generieren weiterhin Deklarationen für Steuerelemente in der Basisklasse, was bedeutet, dass die Steuerelemente in der Basisklasse ausgeblendet werden und null sind.Wie können Benutzersteuerungsklassen auf Steuerelemente aufmerksam gemacht werden, die in der Basisklasse deklariert sind?

Antwort

6

Das CodeFileBaseClass-Attribut kann auf oder @Control Deklarationen angewendet werden, um die ASP.NET-Laufzeit für alle in der Basisklasse deklarierten Steuerelemente zu sensibilisieren.

MSDN beschreibt es wie folgt:

Gibt den Typ Name einer Basisklasse für eine Seite und die dazugehörigen Code-Behind-Klasse.

Dieses Attribut ist optional, aber wenn es muss das Codefile-Attribut verwendet wird, auch vorhanden sein. Verwenden Sie dieses Attribut, wenn Sie ein gemeinsam genutztes Szenario implementieren möchten, in dem Sie gemeinsame Felder (und optional verknüpfte Ereignisse) in einer Basisklasse definieren, um auf die in einer Webseite deklarierten Steuerelemente zu verweisen. Wegen des ASP.NET Codegenerierung Modells, wenn Sie die Felder in einer Basisklasse definiert ohne dieses Attribut zu verwenden, bei Kompilierung neuer Mitglieds Definitionen würden für die Kontrollen erzeugt werden auf der Webseite erklärt (innerhalb eines separaten Teilklasse Stub), und Ihre gewünschte Szenario würde nicht funktionieren. Aber wenn Sie die CodeFileBaseClass Attribut die Basisklasse mit der Seite zu verbinden, und Sie machen Ihre Teilklasse (seinen Namen das Inherits Attribut zugeordnet ist und dessen Source Datei wird durch die Codefile verwiesen Attribut) vererben von der Basis Klasse, dann die Felder in der Basis Klasse kann die Steuerelemente auf der Seite nach Code Generation verweisen.