Cenni preliminari sui generatori di controlli

Un generatore di controlli è una classe che regola il modo in cui il controllo server viene analizzato quando viene utilizzato in modo dichiarativo su una pagina ASP.NET. Ogni controllo ASP.NET è associato a un generatore di controlli predefinito (System.Web.UI.ControlBuilder). Durante l'analisi della pagina, il generatore di controlli predefinito verifica se un controllo è contrassegnato con l'attributo ParseChildren(true). In questo caso, gli elementi nidificati all'interno dei tag di apertura e di chiusura del controllo devono corrispondere alle proprietà del controllo. Qualsiasi altro elemento nidificato genera un errore del parser. Per ulteriori informazioni, vedere Utilizzo di ParseChildrenAttribute. Se un controllo non viene contrassegnato come ParseChildren(true), il generatore di controlli crea i controlli figlio e chiama IParserAccessor.AddParsedSubObject sul controllo. L'implementazione predefinita di AddParsedSubObject aggiunge i controlli figlio all'insieme Controls del controllo. Il testo letterale tra i tag del controllo nidificato viene analizzato come LiteralControl.

Se si desidera fornire un'altra logica di analisi (personalizzata) per il controllo, è possibile creare un generatore di controlli derivandolo da ControlBuilder ed eseguendo l'override dei metodi della classe base. È necessario associare il generatore di controlli personalizzato al controllo contrassegnando tale controllo con System.Web.UI.ControlBuilderAttribute, come descritto nell'esempio seguente.

// Define a custom control builder.
public class MyControlBuilder : ControlBuilder {...}

// Associate it with your control by applying a 
// ControlBuilder attribute.
[ControlBuilder(typeof(MyControlBuilder))]
public class MyControl : Control {...}
[Visual Basic]
' Define a custom control builder.
Public Class MyControlBuilder
   Inherits ControlBuilder
   ...
End Class

' Associate it with your control by applying a 
' ControlBuilder attribute.
<ControlBuilder(GetType(MyControlBuilder))> _ 
Public Class MyControl
   Inherits Control
   ...
End Class

Nella tabella seguente sono elencati alcuni metodi di ControlBuilder di cui è possibile eseguire l'override quando si definisce un generatore di controlli personalizzato. Per un elenco completo dei membri di ControlBuilder, vedere ControlBuilder.

Metodi di ControlBuilder Funzione
AllowWhiteSpaceLiterals Specifica se gli spazi tra i tag del controllo figlio nidificato vengono aggiunti all'insieme Controls come istanze LiteralControl. Per un esempio, vedere Esempio di generatore di controlli personalizzato.
AppendSubBuilder Aggiunge un generatore di controlli per controlli figlio.
GetChildControlType Restituisce il Type di un controllo figlio basato sul nome dei relativi tag. Utilizzare questo metodo per filtrare i controlli figlio aggiunti all'insieme Controls. Per un esempio, vedere Guida rapida di ASP.NET —> Web Form ASP.NET —> Modifica dei controlli personalizzati.

Per un esempio di generatore di controlli, vedere Esempio di generatore di controlli personalizzato.

Nota   Un altro modo per eseguire l'override della logica di analisi consiste nell'eseguire l'override del metodo AddParsedSubObject ereditato da Control. Per un esempio, vedere Guida rapida di ASP.NET —> Web Form ASP.NET —> Modifica dei controlli personalizzati —> Override di analisi di controlli. Si noti che l'analisi tramite un generatore di controlli avviene in fase di compilazione, mentre il metodo AddParsedSubObject viene eseguito in fase di esecuzione (e potrebbe causare una riduzione delle prestazioni).

Vedere anche

Esempio di generatore di controlli personalizzato | Analisi dei controlli, ParseChildrenAttribute e generatori di controlli | ControlBuilderAttribute