C# 希登菲尔德不是';不是网络控制吗?

C# 希登菲尔德不是';不是网络控制吗?,c#,asp.net,.net,inheritance,C#,Asp.net,.net,Inheritance,为什么System.Web.UI.WebControls.HiddenField继承System.Web.UI.Control而不是System.Web.UI.WebControls.WebControl?如果不是因为网页中使用了隐藏字段,那么这种布局似乎真的不合逻辑。。为什么它设计成这样 当你不能做像WebControl x=new HiddenField()这样的事情时,这会让事情变得很烦人UI.Control和UI.WebControls.WebControl之间的主要区别在于WebCon

为什么
System.Web.UI.WebControls.HiddenField
继承
System.Web.UI.Control
而不是
System.Web.UI.WebControls.WebControl
?如果不是因为网页中使用了隐藏字段,那么这种布局似乎真的不合逻辑。。为什么它设计成这样


当你不能做像
WebControl x=new HiddenField()这样的事情时,这会让事情变得很烦人

UI.Control
UI.WebControls.WebControl
之间的主要区别在于
WebControl
被用作具有UI的组件的基类。由于隐藏字段从不向用户显示任何内容(毕竟它是隐藏的),
UI.Control
是更合适的基类。

但我们都知道,禁用CSS时可以显示隐藏字段。。但是+1表示逻辑。我相信HiddenField呈现为,即使CSS被禁用,它仍然会被隐藏。如果它被呈现为具有“display:none;”的不同HTML元素CSS,然后是的,它仍然会显示。但我很确定情况并非如此。在重构过程中,我注意到我的大多数更改都是围绕设置了宽度/高度的WebControl进行的-因此,有这样的属性对于不应该/不会显示的字段来说毫无意义是理所当然的。请注意,
WebControl
实际上也继承自
Control
,但是您不能将
HiddenField
强制转换为
WebControl
。(是的,我正在重构:)