我最近学会了编写自己的 WebControl,但我仍然对 Render 和 RenderControl 之间的区别感到模糊。我一开始使用 Render,但在某个时候我开始使用 RenderControl,现在我只使用它。如果我养成了一个坏习惯,我想在我开始采取自己的方式之前将其消灭在萌芽状态。

有帮助吗?

解决方案

如果有一个现有的控制,提供你想这样你就可以利用这一点是如何呈现什么RenderControl被使用。

渲染使用,如果你需要接管的HTML是如何呈现的完全控制。

当然你也可以将二者结合起来为你的编程时间的最优化利用...

修改结果 有关此更好的解释,以及良好的出发点是什么时使用,请参见 mhenry1384

其他提示

这是一篇很好的读物:渲染与渲染控制

摘自链接:

使成为 方法使控制器可以通过将HTML输出写入响应流来渲染自身。这将传达对HTMLTEXTWRITER对象的引用,该对象可以直接写入响应流。直接从控件派生时,应使用此方法。

渲染控制 页面使用方法来渲染每个单独的控件。它允许您的班级消费者渲染它,如果您使用复合控件,则可以使用它来渲染子控制。另外,要注意的一件事是,如果将控件上的可见性属性设置为false,则不会调用这一点。

渲染为受保护的方法,这意味着只有派生类可以访问它。这就是所谓的事件生命周期内,而不应显式调用你的代码。

RenderControl是,它允许你打电话的时候你想要的Render方法的公共方法。您存储控制在ControlsCollection,但要使其在表自己的细胞,你会在使用它,比如,一个定制控制。例如:

   writer.Write(""):
   foreach(Control ctl in Controls)
   {
      writer.Write("")
      ctl.RenderControl(writer);
      writer.Write("");
   }
   writer.Write("");

您应该总是覆盖渲染,而不是RenderControl,因为它是所谓的事件生命周期(就像我已经说过)

(来自 http://forums.asp.net/t/909220.aspx/1 ,对不起我的回答只是一个复制和粘贴的,但我并没有看到多少点重写这样一个清晰明了的解释)

我还是不明白,为什么MS不只是让渲染()的公共方法。为什么是一个单独的RenderControl()有必要吗?造成这种情况的推理是从迄今为止给出的所有答案丢失。谁可以解释它的第一人得到一个闪亮给予好评。

RenderControl用于页面呈现子控件。渲染允许单独控制来呈现自身。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top