OnPreRender vs Page_PreRender

asp.net

Solution

The `OnPreRender` method of the page is responsible for raising the `Page_PreRender` event.

Usually you should just subscribe to the `Page_PreRender` event.

If you need to do some special processing before it's safe to raise the Page_PreRender event, then you can override the OnPreRender method and do the processing before calling `base.OnPreRender(e)`.

Problem

I knew about Page PreRender event and also about overriding OnPreRender, but didn't know existence of Page_PreRender method. Recently while going through this forum i found and search the difference between both but couldn't get much? Here is my observation: I have a page with label Label1. Scenario 1: ``` protected void Page_Load(object sender, EventArgs e) { Label1.Text = "load "; } protected override void OnPreRender(EventArgs e) { Label1.Text += "OnPreRender "; base.OnPreRender(e); } private void Page_PreRender(object sender, System.EventArgs e) { Label1.Text += "Page_PreRender "; } ``` value of Lable1 would be: load OnPreRender Page_PreRender Scenario 2: ``` protected void Page_Load(object sender, EventArgs e) { Label1.Text = "load "; } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); Label1.Text += "OnPreRender "; } private void Page_PreRender(object sender, System.EventArgs e) { Label1.Text += "Page_PreRender "; } ``` Note the call order of base.OnPreRender(e); value of Lable1 would be: load Page_PreRender OnPreRender I can only say base.OnPreRender(e) is calling Page_PreRender(), but isn't it private? Can some one please tell, what is difference between both and when to use which? In general which one should be used?

Original source