为什么在Control的Visible属性设置为false时调用RenderControl?

时间:2011-11-17 17:12:07

标签: c# asp.net

我在Control的重写RenderControl方法上设置了一个断点,并且断点正在被点击,但在Visual Studio中,我可以看到this.Visiblefalse

Visible属性的文档中,它说:

  

如果此属性为false,则不呈现服务器控件。

这并不一定意味着没有调用RenderControl方法,但它是一个不应该做的大提示。如果Visible为假,我是否应该手动跳出该方法?这是在任何地方记录的吗?

1 个答案:

答案 0 :(得分:4)

评估msdn

  

在渲染之前,会为页面和所有控件保存视图状态。   在渲染阶段,页面为每个页面调用 Render方法   控件,提供一个将其输出写入的文本编写器   页面的Response属性的OutputStream对象。

从下面的图表中可以看出,RenderControl是渲染过程的一部分: enter image description here

因此,无论RenderControl道具价值如何,它都会调用方法Visible。您有责任根据Visible属性输出空字符串或任何内容。