2009-07-13 19 views
5

Ho letto sopra questo tipo di spiegazione per quando si sceglie Controllo Web e Controllo durante la creazione di controlli personalizzati, ma non è abbastanza. Ho visto che i controlli personalizzati vengono ereditati da entrambi quando escono dall'interfaccia utente.Ereditare da Controllo vs Controllo Web

http://msdn.microsoft.com/en-us/library/yhzc935f.aspx

"Se il controllo esegue il rendering un elemento dell'interfaccia utente (UI) o qualsiasi altro elemento visibile sul client, si dovrebbe ricavare il vostro controllo da System.Web.UI.WebControls .. ::. WebControl (o una classe derivata) Se il controllo esegue il rendering di un elemento non visibile nel browser, ad esempio un elemento nascosto o un meta elemento, derivare il controllo da System.Web.UI .. ::. Control. La classe WebControl deriva da Control e aggiunge proprietà relative allo stile come Font, ForeColor e BackColor. Inoltre, un controllo che deriva da WebControl partecipa alle funzionalità dei temi di ASP.NET senza alcun lavoro aggiuntivo da parte tua. "

quindi l'unica ragione per usare WebControl è se vuoi usare le loro funzionalità di stile? Sto solo andando a produrre stringhe con un stringbuilder in modo perfetto quindi non mi interessa di quella roba. Preferirei usare direttamente il design senza tablature e le stringhe per formare il mio codice HTML che il mio controllo rende comunque.

risposta

2

WebControl non esegue il rendering di tabelle o qualcosa del genere a meno che non lo comunichi. Quello che ha sono le caratteristiche di stile che la maggior parte degli utenti si aspetteranno da un controllo che esegue il rendering con un'interfaccia utente.

Non ti costa molto usarlo. Fare un tentativo e vedere se ti provoca problemi.

+0

stai parlando fornisce proprietà come cssClass, ecc.? – PositiveGuy

+0

Il mio controllo sta sputando l'HTML specificato dalla nostra tabella DB dal nostro sistema CMS che un utente ha immesso nel nostro sistema di amministrazione CMS. Tutti gli stili saranno già in quell'HTML o in qualsiasi elemento come i div che avvolgo questo contenuto nella logica dietro le quinte con il mio controllo personalizzato. Quindi non prevedo la necessità di cssClass, ecc., Poiché il mio controllo lo gestirà. Quindi, se eredito da Control, produrrà comunque alcuni componenti dell'interfaccia utente principale, ma non è necessario eseguire lo styling durante il runtime. – PositiveGuy

+0

Ok, questo ha senso, e sì, stavo parlando di CssClass, BackColor, BorderColor, ecc. –

10

controllo

Derivando dalla classe Control permette il nostro controllo di sfruttare i metodi di rendering fornite dalla classe Control, così come l'utilizzo di ViewState.

WebControl

La classe WebControl deriva dalla classe Control. Tuttavia, se deriviamo il controllo personalizzato da WebControl, otteniamo il supporto gratuito per molti aspetti visivi del nostro controllo, come la dimensione del carattere, le classi CSS, il colore di sfondo e così via.

Da quale classe devo derivare?

Quando si crea un controllo personalizzato che richiede un'interfaccia utente minima o nulla, è necessario derivare dalla classe Control. Se il controllo richiede la necessità di un ampio supporto dell'interfaccia utente, è necessario derivare da WebControl.

Da: http://dotnetslackers.com/articles/aspnet/ASPNETCustomControlsPart1.aspx

+0

OK, quindi l'unico vantaggio tangibile reale da un punto di vista di "buoni standard" è che se utilizzerai WebControl, chiunque esegua il tuo controllo può utilizzare CssClass su quel controllo. Tutti gli altri amano le dimensioni dei caratteri, il colore di sfondo è il cestino, come si dovrebbe sempre usare un file .css con stili e ID nel codice. – PositiveGuy

+0

Quando si crea un controllo personalizzato che richiede un'interfaccia utente minima o nulla, è necessario derivare dalla classe Control. Se il controllo richiede la necessità di un ampio supporto dell'interfaccia utente, è necessario derivare da WebControl. Ok, ma posso vedere dal mio punto di vista che l'unico motivo per cui WebControl è quello di fornire l'attributo cssClass. Quindi, se il tuo controllo sputa, dì alcuni contenuti dell'interfaccia utente basati su un sistema CMS e non hai bisogno di specificare un cssClass (perché lo stai facendo attraverso la tua logica nel controllo del server personalizzato dietro le quinte), quindi non usare WebControl – PositiveGuy

0

Quindi, avete una domanda da fare? Penso che le differenze tra i due fossero ben indirizzate nell'articolo MSDN.

+0

Solo cercando di verificare se c'è davvero qualche altro vantaggio nell'usare WebControl oltre a ottenere un attributo cssClass. E che ereditando da Control non significa che non lo si stia disegnando, che si possano sempre usare stili semplici nei metodi di controllo personalizzati. In realtà, non vedo un vantaggio nell'uso di WebControl a meno che tu non abbia in definitiva bisogno dell'attributo cssClass disponibile per quello che sto concludendo personalmente. – PositiveGuy

+0

Ecco il problema, tutto ciò che è stato sputato indietro era l'articolo MSDN che ho appena letto. Capisco che, ma questa affermazione qui: "Quando si crea un controllo personalizzato che richiede poca o nessuna interfaccia utente, allora si dovrebbe derivare dalla classe di controllo". Che diamine vuol dire, che non sei responsabile per il rendering di HTML (UI) o intendono dire se non hai bisogno di STILI. è una scelta scadente di parole su quella pagina. Quella frase dice che non stai facendo nessuna interfaccia utente. Significano lo stile. – PositiveGuy

+0

Continua dicendo "Se il controllo esegue il rendering di un elemento dell'interfaccia utente (UI) o di qualsiasi altro elemento visibile sul client, dovresti ottenere il controllo da System.Web.UI.WebControls .. ::. WebControl". Non vero. Nel mio caso sputerà un sacco di UI ... ma gli utenti non dovrebbero aggiungere alcuna classe CSS ad esso. – PositiveGuy

Problemi correlati