Un pò di giorni fa mi sono imbatutto in un errore che no avevo mai visto. All'interno di una pagina asp.net avevo inserito un pò di web control di base (textbox, checkbox, ecc..) e un mio controllo custom. Volevo poi inserire dei validatori all'interno della pagina per controllare se questi controlli fossero correttamente valorizzati prima di un eventuale postback.
Eseguo la pagina e mi trovo questo errore:

Control '{0}' referenced by the ControlToValidate property of '{1}' cannot be validated.

In pratica cosa succedeva ? Il validatore legato al mio controllo custom (attraverso la proprietà ControlToValidate) non sapeva su che proprietà effettuare il controllo di validazione.
Per risolvere questo inconveniente ci viene in aiuto un attributo del .NET Framework da applicare a livello di classe, precisamente prima della dichiarazione della classe rappresentante il nostro controllo personalizzato. L'attributo in questione è il "ValidationPropertyAttribute" che segnala ad un eventuale controllo di tipo validator, su quale proprietà del mio controllo custom effettuare la validazione.

[ValidationPropertyAttribute("SelectedText")]

public class MyCustomControl : CompositeControl
{ ... }

Nell'esempio, la validazione viene effettuata sulla proprietà "SelectedText".
Così facendo siamo in grado di creare dei controlli web personalizzati che possono essere vaidati dai controlli di validazione di base del .NET Framework.