2013-04-16 10 views
5

Perché System.Web.UI.WebControls.HiddenField eredita System.Web.UI.Control anziché System.Web.UI.WebControls.WebControl? Sembra una collocazione davvero illogica se non il fatto che i campi nascosti vengono utilizzati nelle pagine Web. Qual è la ragione per cui è stata progettata in questo modo?HiddenField non è un WebControl?

rende le cose abbastanza fastidioso quando non è possibile fare cose come WebControl x = new HiddenField();

+0

Si noti che 'WebControl' eredita anche da' Control' – Magnus

+0

Infatti, ma non si può lanciare un 'HiddenField' in un' WebControl'. (E sì, sto refactoring:]) – Izzy

risposta

5

La differenza principale tra UI.Control e UI.WebControls.WebControl è che WebControl è destinato a servire come classe base per un componente che ha un'interfaccia utente. Poiché un campo nascosto non visualizza mai nulla all'utente (è nascosto, dopotutto), UI.Control è una classe base più adatta.

+0

Ma sappiamo tutti che è possibile visualizzare i campi nascosti quando si disabilita CSS .. Ma +1 per la logica. – Izzy

+3

Credo che il rendering di HiddenField sia , che sarebbe comunque nascosto anche se il CSS fosse disabilitato. Se è stato reso come un diverso elemento HTML con 'display: none;' CSS, allora sì, sarebbe ancora visualizzato. Ma sono abbastanza sicuro che non sia così. –

+0

Durante il refactoring ho notato che la maggior parte delle mie modifiche riguardavano WebControls con Width/Heights impostati, quindi è ovvio che avere tali proprietà non ha senso per un campo che non dovrebbe/non verrà visualizzato. – Izzy

Problemi correlati