我搜索有关page_prerender的Google,我们如何使用page_prerender而不是page_load,或者可能是我们无法使用page_load并必须使用page_prerender但我发现的每个地方,

"The point at which the objects are prerendered is the last time changes to the objects can be saved or persisted to viewstate. This makes the PreRender step a good place to make final modifications, such as changing properties of controls or changing Control Tree structure, without having to worry about ASP.NET making changes to objects based off of database calls or viewstate updates. After the PreRender phase those changes to objects are locked in and can no longer be saved to the page viewstate. The PreRender step can be overridden using OnPreRender".

但是我不明白,哪种更改是我们在page_load中无法做的,并且必须在Prerender中进行。

众所周知,在page_preinit上,我们可以动态创建控件,更改或分配主页或主题,我们无法在page_load或init之后。

但是,page_prerender呢?

有帮助吗?

解决方案

PAGE_LOAD事件后,某些事件将触发。有些是显而易见的,而另一些则不是。这是因为这些事件只能在娱乐活动(或加载后)之后执行。例如,如果您想注册一个客户端脚本,则可以是page_render。或您可能有目的地调用page_load中的page.validate方法可以理解在渲染阶段已经调用。

同样,只有在准备好渲染的相关控件时(为用户的浏览器完全处理),其他其他人则起作用。

其他提示

这不是您可以做什么的问题 只要 在page_prerender中执行操作,您的控件之间可能存在依赖性,只有在所有事件都在page_load中处理后才变得明显。

Page_prerender事件可用于指定对您的控件的HTML渲染的更改。 负载和Prerender之间的一个重要区别是,在启动控制事件并在控制事件后调用Prerender之前,负载运行。 因此,如果根据控制事件代码要更改输出HTML,则可以在Prerender事件中进行。

要注意的另一个重要的事情是,页面对象在页面对象上提出了Prerender事件,然后递归地对每个子控制器进行了相同的操作。单个控件的Prerender事件发生在页面的Prerender事件之后。因此,这为您提供了如何修改特定控件的渲染的增加的杠杆作用。这在page_load中是不可能的。

如果您使用的是使用自定义/用户控件,则可以使用它。

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