Mic*_*zoe 17 asp.net render web-controls
我最近学会了编写自己的WebControls,但是我仍然对Render和RenderControl之间的差异感到朦胧.我开始使用Render,但在某些时候我开始使用RenderControl,我现在只使用它.如果我养成了一个坏习惯,我想在我按照自己的方式设定之前把它扼杀在萌芽状态.
o.k*_*k.w 17
这是一个很好的阅读: Render vs RenderControl
链接摘录:
该渲染方法使得控制器通过HTML输出写入到响应流来呈现自身.这会传递对HTMLTextWriter对象的引用,该对象可以直接写入响应流.直接从控件派生时,应使用此方法.
该RenderControl方法用于通过在网页来呈现每个单独的控制.它允许类的使用者渲染它,如果使用复合控件,则可以使用它来渲染子控件.另外,需要注意的一点是,如果控件上的visibility属性设置为false,则不会调用此方法.
Render是一个受保护的方法,这意味着只有派生类才能访问它.它在Event Lifecycle中调用,不应在代码中显式调用.
RenderControl是一个公共方法,允许您在需要时调用Render方法.您可以在自定义控件中使用它,您可以在ControlsCollection中存储控件,但希望在表格中的自己的单元格中渲染它们.例如:
writer.Write(""):
foreach(Control ctl in Controls)
{
writer.Write("")
ctl.RenderControl(writer);
writer.Write("");
}
writer.Write("");
您应该始终覆盖Render,而不是RenderControl,因为它在Event Lifecycle中被调用(正如我已经说过的那样)
(来自http://forums.asp.net/t/909220.aspx/1,对不起我的回答只是复制并粘贴了,但我没有看到重写这么清楚的解释)
我仍然不明白为什么MS不简单地使Render()成为一个公共方法.为什么需要单独的RenderControl()?迄今为止给出的所有答案都没有找到原因.能够解释它的第一个人得到了一个闪亮的upvote.
如果存在提供所需内容的现有控件,则使用RenderControl,以便您可以利用渲染方式.
如果您需要完全控制html的呈现方式,则使用渲染.
您当然可以将两者结合起来,以便最佳地使用您的编程时间......
编辑
为了更好地解释这一点,以及何时使用的优点,请参阅mhenry1384的答案.
| 归档时间: |
|
| 查看次数: |
10578 次 |
| 最近记录: |