Come controllo dell'utente make classi parziali consapevoli di controlli dichiarato nella classe di base?
-
24-09-2019 - |
Domanda
Dobbiamo fare qualcosa di speciale per avere ASP.NET classi parziali consapevoli di controlli che sono dichiarati di classi base del nostro controllo utente? Le classi parziali mantengono dichiarazioni di generazione del controllo nello classe base che significano i controlli nella classe base ottenere nascosti e sono nulli.
Soluzione
L'attributo CodeFileBaseClass può essere applicato a @Page o < a href = "http://msdn.microsoft.com/en-us/library/d19c0t4b.aspx" rel => @ dichiarazioni controllo "nofollow noreferrer" per rendere il runtime ASP.NET a conoscenza di eventuali controlli dichiarati nella classe di base.
MSDN descrive come segue:
Specifica il nome del tipo di una classe base per una pagina e la sua associata classe code-behind.
Questo attributo è facoltativo, ma quando viene utilizzato il attributo CodeFile deve essere presente. Utilizzare questo attributo quando si desidera implementare uno scenario condiviso, dove si definisce campi comuni (e eventi eventualmente associati) in un classe di base per i controlli di riferimento ha dichiarato in una pagina Web. A causa della ASP.NET modello di generazione di codice, se si definiti i campi in una classe base senza utilizzare questo attributo, a definizioni nuovo membro a tempo di compilazione verrebbe generato per i controlli dichiarato nella pagina Web (entro un separare stub classe parziale), e la vostra scenario desiderato non avrebbe funzionato. Ma se si utilizza il CodeFileBaseClass attribuire ad associare la classe di base con la pagina e fate la vostra classe parziale (il suo nome è assegnato Inherits e la sua fonte file viene riferimento il CodeFile attributo) ereditano dalla base classe, allora i campi nella base classe potrà fare riferimento alla controlli nella pagina dopo il codice generazione .