2013-04-16 29 views
5

爲什麼System.Web.UI.WebControls.HiddenField繼承System.Web.UI.Control而不是System.Web.UI.WebControls.WebControl?這似乎是非常不合邏輯的放置,如果不是網頁中使用隱藏字段這一事實,它的設計原因是什麼?HiddenField不是一個WebControl?

這讓事情變得很煩人的,當你不能做這樣的事情WebControl x = new HiddenField();

+0

請注意'WebControl'也繼承自'Control' – Magnus

+0

事實上,您不能將'HiddenField'轉換爲'WebControl'。 (是的,我正在重構:]) – Izzy

回答

5

UI.ControlUI.WebControls.WebControl之間的主要區別在於,WebControl是爲了作爲具有UI組件的基類。由於隱藏字段從不向用戶顯示任何內容(畢竟隱藏),所以UI.Control是更合適的基類。

+0

但是我們都知道,當你禁用CSS時,你可以顯示隱藏的字段。但是邏輯+1。 – Izzy

+3

我相信HiddenField呈現爲,即使禁用了CSS,它仍然會隱藏。如果它被呈現爲具有'display:none'的不同HTML元素CSS,那麼是的,它仍然會顯示。但我很確定情況並非如此。 –

+0

在重構過程中,我注意到我的大部分更改都是圍繞着設置了寬度/高度的WebControls進行的 - 所以它支持這樣的理由:擁有這樣的屬性對於不應該/不會顯示的域是沒有意義的。 – Izzy

相關問題