在ASP.Net中使用Page_Load和Page_PreRender

vml*_*l19 26 asp.net

我看到有些人在同一个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);
    }
Run Code Online (Sandbox Code Playgroud)

Biz*_*pps 29

这取决于您的要求.

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

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

参考:Control Execution Lifecycle MSDN

试着读一下

ASP.NET页面生命周期概述ASP.NET

控制执行生命周期

问候


小智 28

Page_Load和之间的主要区别在于Page_PreRender,在Page_Load方法中,并非所有页面控件都已完全初始化(加载),因为Load()尚未调用单个控件方法.这意味着树还没有准备好渲染.在Page_PreRender您保证所有页面控件都已加载并准备好呈现.从技术上讲,这Page_PreRender是您在转换为HTML流之前调整页面的最后机会.