4

据我了解,该Visible属性有助于启用或禁用控件的可见性。

但是对于HiddenFieldASP.NET 中的控件,它有什么用呢?

4

3 回答 3

7

HiddenField 上的Visible属性的功能与其他控件上的一样。如果 HiddenField 控件的Visible属性设置为false,则该控件不会呈现到页面上。通常 HiddenField 被渲染为一个<input type= "hidden"/>元素。但是如果它不是可见的,它的数据就会保存在页面的视图状态中。

在 .Net 2.0 中引入 HiddenField 的原因是为了替代

  • 查看状态
  • 会话状态
  • 饼干

当这些位置不可用或不受欢迎时,作为存储这种隐藏状态信息的地方。将 Visible 设置为 false 只会强制它再次使用 viewstate 而不是渲染<input type= "hidden"/>. 所以它有点违背目的,但它是一个易于理解的容器,用于存储用户不需要看到的一些数据。

无论它是呈现为文档中的元素(Visible = true)还是视图状态编码(Visible = false),都没有太大区别。

重要的是要知道 HiddenField 的值实际上是与页面一起发送的,即使可见属性为 false 也是如此,并且不应将其用于敏感信息。

ASP.NET HiddenField 可见属性

wiki.ASP.NET 上的 ASP.NET HiddenField

于 2013-03-07T18:36:16.323 回答
5

由于继承,该Visible属性甚至存在于HiddenField对象上。

文档表明HiddenField该类继承自定义属性的基Control类。Visible继承意味着从基类继承的所有类都自动获得或获取基类公开的所有方法。在这种情况下,HiddenField它正在获取Visible其基Control类的属性,即使您在问题中指出它显然是无用的。

这并不是因为语言经常有“愚蠢的东西”(尽管我不会质疑这种说法的真实性),而是因为面向对象的设计使得不可能从从基类继承的派生类中删除方法。

于 2010-12-18T15:36:29.697 回答
-4

可能是因为让它不在那里比把它留在那里更难。

许多语言都有一些愚蠢的东西。就像 C 和 C++ 中的一元 + 运算符

于 2010-12-18T15:20:55.710 回答