Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.Net中使用页面加载和页面预渲染_Asp.net - Fatal编程技术网

在ASP.Net中使用页面加载和页面预渲染

在ASP.Net中使用页面加载和页面预渲染,asp.net,Asp.net,我看到一些人在同一个aspx页面中使用Page_Load和Page_PreRender。我能确切地知道为什么我们需要在同一个asp.net页面中调用这两个方法吗 请看下面的代码 protected void Page_Load(object sender, EventArgs e) { try { dprPager.ButtonClickPager += new EventHandler(dprPager_ButtonCli

我看到一些人在同一个aspx页面中使用Page_Load和Page_PreRender。我能确切地知道为什么我们需要在同一个asp.net页面中调用这两个方法吗

请看下面的代码

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            dprPager.ButtonClickPager += new EventHandler(dprPager_ButtonClickPager);

            if (!Page.IsPostBack)
            {
              InitPager();

            }
        }
        catch (Exception ex)
        {

        }

    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        erMsg.Visible = !string.IsNullOrEmpty(lblError.Text);
    }

这取决于你的要求

页面加载:执行所有请求通用的操作,例如设置数据库查询。此时,将创建并初始化树中的服务器控件,恢复状态,表单控件反映客户端数据。请参阅处理继承的事件

预渲染:在渲染输出之前执行任何更新。可以保存在预渲染阶段对控件状态所做的任何更改,而在渲染阶段所做的更改将丢失。请参阅处理继承的事件

参考:控制执行生命周期MSDN

试着阅读


在页面上创建的ASP.NET控件将ViewState和PostData发送到所有服务器端控件后,将发生页面加载。Page_Init是在恢复ViewState和PostData之前激发的事件。页面加载通常是执行任何页面范围初始化的地方。Page_PreRender是在将页面状态呈现为HTML之前,您有机会处理的最后一个事件。页面加载
是更典型的事件。

实现预呈现而不是加载的一个重要要求是需要使用页面上的控件。加载页面时,控件不会呈现,因此无法引用。

处理ASP.NET web表单的过程分阶段进行。在每个状态下,都会引发各种
事件。如果您有兴趣将代码插入
处理流(在服务器端),那么您必须处理相应的页面事件。

正如@BizApps所指出的,主要区别在于加载事件发生在ViewState填充之后,而预渲染事件发生在稍后的渲染阶段之前,在所有单个子控件的动作事件处理程序都已执行之后。
因此,控件的操作事件处理程序所做的任何修改都应该在预呈现期间在控件层次结构中进行更新,就像在预呈现之后一样。

Page\u Load
Page\u PreRender
之间的主要区别在于,在Page\u Load方法中,并不是所有的页面控件都被完全初始化(加载),因为尚未调用单个控件
Load()
方法。这意味着树尚未准备好进行渲染。在
Page\u PreRender
中,您保证已加载所有页面控件并准备好进行渲染。从技术上讲,
Page\u PreRender
是在页面变成HTML流之前调整页面的最后一次机会。

您不需要同时使用这两种方法,是否有一个您难以理解的特定示例<首先调用代码>页面加载
,然后调用
页面预渲染
。请检查我是否添加了代码。我正在尝试确定回发是由“添加”按钮服务器控件还是由页面刷新引起的,以便在页面刷新时停止将记录插入asp:GridView。但是我在这里找不到Page PreRender事件:很遗憾,我不得不在这里发布,因为S.O已经停止了我提出的新问题:(为什么我不能将所有逻辑移到PreRender?