Ho notato che sulla maggior parte, se non tutti, controlli web standard nello spazio dei nomi System.Web.UI.WebControls, è possibile aggiungere qualsiasi proprietà che si desidera a loro senza crash la pagina.Permettere qualsiasi proprietà/attributo su un server/usercontrol
Prendere l'asp: controllo pulsante per un esempio.
Questo codice è perfettamente valido:
<form runat="server">
<asp:Button runat="server" Text="Test button" crapAttribute="crapValue" />
</form>
Ora, ho un controllo server personalizzato che si blocca se posso aggiungere attributi arbitrari ad esso. Accetta solo attributi che hanno una proprietà pubblica corrispondente definita.
L'errore che ottengo è qualcosa come "Il controllo non ha una proprietà pubblica denominata" crapAttribute "".
Vorrei che i miei controlli personalizzati accettassero qualsiasi attributo senza arresti anomali. Cosa devo fare per farlo funzionare?
Ho esaminato i controlli standard in Reflector e hanno tutti i tipi di attributi e roba ma non c'era nulla che io abbia visto e che immediatamente ha attirato la mia attenzione.
I miei controlli personalizzati ereditano da WebControl ciò che vale.
Ora mi sento come un asino :-) Mi sono reso conto che in effetti sto ereditando da "Control", non "WebControl". Abbiamo ereditato da "WebControl" ma è stato cambiato in "Controllo" qualche tempo fa per qualche motivo. Credo che se appena inizio ad ereditare da "WebControl", questo problema cesserà di esistere. – HaukurHaf