2009-10-31 32 views
16

我最近学会编写自己的WebControls,但我仍然对Render和RenderControl之间的区别感到朦胧。我开始使用Render,但是在某个时候我开始使用RenderControl,现在我只使用RenderControl。如果我正在形成一种坏习惯,那么在我开始行动之前,我想先扼杀它。WebControl创建中的Render和RenderControl有什么区别?

回答

5

如果有一个现有的控件提供你想要的,所以你可以利用RenderControl如何呈现。

如果您需要完全控制html呈现方式,则使用渲染。

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

2

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

17

这里有一个很好看的:从链接 Render vs RenderControl

摘录:

Render方法使 控制器通过写 HTML输出响应流来表现自己。 这将传递对 HTMLTextWriter对象的引用,该对象可以将 直接写入响应流。当您直接从控制派生 时,应使用此方法 。

RenderControl方法由页面中使用 渲染每个个体 控制。它允许您的课程的用户 呈现它,如果您使用的是复合控件,则可以使用 呈现子控件(如果 )。 此外,有一点需要注意的是,如果该控件的可见性 属性设置为 false,则不会调用此 。

6

渲染是一个受保护的方法,也就是说只有派生类可以访问它。它在事件生命周期内调用,不应在代码中明确调用。

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不是简单地使Render()公共方法。为什么需要单独的RenderControl()?迄今为止给出的所有答案都没有推论。第一个可以解释它的人会得到一个闪亮的upvote。

+0

+1用于详细说明关于系统的一些混淆位。帮助为我绘制更完整的照片。 – 2012-09-21 16:35:18

相关问题