2013-04-16 5 views
5

Dlaczego System.Web.UI.WebControls.HiddenField dziedziczy System.Web.UI.Control zamiast System.Web.UI.WebControls.WebControl? Wydaje się to nielogiczne, jeśli nie fakt, że ukryte pola są używane na stronach internetowych. Jaki był tego powód?HiddenField nie jest WebControl?

To sprawia, że ​​rzeczy dość irytujące, kiedy nie można zrobić rzeczy jak WebControl x = new HiddenField();

+0

Zauważ, że 'WebControl' również dziedziczy po' Control' – Magnus

+0

Rzeczywiście, ale nie możesz rzucić 'HiddenField' w' WebControl'. (I tak, refaktoryzuję:]) – Izzy

Odpowiedz

5

Podstawowa różnica między UI.Control i UI.WebControls.WebControl że WebControl ma służyć jako klasa bazowa dla składnika, który ma UI. Ponieważ ukryte pole nigdy niczego nie wyświetla użytkownikowi (w końcu jest ukryte), bardziej odpowiednia jest klasa podstawowa.

+0

Ale wszyscy wiemy, że możesz wyświetlić ukryte pola, gdy wyłączasz CSS. Ale +1 dla logiki. – Izzy

+3

Wierzę, że HiddenField renderuje się jako , który nadal byłby ukryty, nawet gdyby CSS był wyłączony. Jeśli byłby renderowany jako inny element HTML z "display: none" CSS, a następnie tak, nadal będzie wyświetlany. Ale jestem prawie pewien, że tak nie jest. –

+0

Podczas refaktoryzacji zauważyłem, że większość moich zmian dotyczyła WebControls, które miały ustawione Width/Heights - więc nie ma sensu, że posiadanie takich właściwości nie ma sensu dla pola, które nie powinno/nie będzie wyświetlane. – Izzy