Explain events in C#

The following code is for passing Session variables from one page to the next. My question is about base.OnInit(e); in Cookieless1.aspx.cs
What does it do?

Also: What does the following code accomplish?

private void InitializeComponent()
{
this.cmdLinkAbsolute.Click += new System.EventHandler(this.cmdLinkAbsolute_Click);
this.cmdLink.Click += new System.EventHandler(this.cmdLink_Click);
this.Load += new System.EventHandler(this.Page_Load);

}

in this particualr example, I am interested to know what exactly happens on the page_Load()?
What is the difference between not coding for these and let the page life cycle take it course?

<%@ Page language="c#" src="Cookieless1.aspx.cs" AutoEventWireup="false" Inherits="Cookieless1" %>
<HTML>
<body>
<form id="Form1" method="post" runat="server">
<asp:HyperLink id="lnkRedirect" style="Z-INDEX: 100; LEFT: 31px; POSITION: absolute; TOP: 32px" runat="server" Width="296px" Height="32px" NavigateUrl="Cookieless2.aspx">Go to Cookieless2 using a HyperLink control</asp:HyperLink>
<asp:Button id="cmdLinkAbsolute" style="Z-INDEX: 104; LEFT: 32px; POSITION: absolute; TOP: 180px" runat="server" Width="264px" Text="Go to Cookieless2 using an absolute path"></asp:Button>
<asp:Button id="cmdLink" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 104px" runat="server" Width="264px" Text="Go to Cookieless2 using a relative path"></asp:Button>
<asp:Label id="lblInfo" style="Z-INDEX: 103; LEFT: 348px; POSITION: absolute; TOP: 32px" runat="server" Width="292px" Height="188px" Font-Names="Verdana" Font-Size="X-Small">Hyperlink.NavigateUrl is set to <b>
"Cookieless1.aspx"</b> in code.<br><br><br>The relative path uses<br><b>Response.Redirect("Cookieless1.aspx")</b><br><br><br>The absoulte path uses <b>
Response.Redirect(MapPath("Cookieless2.aspx"))</b></asp:Label>
</form>
</body>
</HTML>


<%-- Cookieless1.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


public class Cookieless1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.HyperLink lnkRedirect;
protected System.Web.UI.WebControls.Button cmdLinkAbsolute;
protected System.Web.UI.WebControls.Button cmdLink;
protected System.Web.UI.WebControls.Label lblInfo;

private void Page_Load(object sender, System.EventArgs e)
{
Session["test"] = "Test String";
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.cmdLinkAbsolute.Click += new System.EventHandler(this.cmdLinkAbsolute_Click);
this.cmdLink.Click += new System.EventHandler(this.cmdLink_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void cmdLink_Click(object sender, System.EventArgs e)
{
Response.Redirect("Cookieless2.aspx");
}

private void cmdLinkAbsolute_Click(object sender, System.EventArgs e)
{
string url;
url = "http://www.java2s.com/Cookieless2.aspx";
Response.Redirect(url);

}
}


--%>

<%-- Cookieless2.aspx
<%@ Page language="c#" src="Cookieless2.aspx.cs" AutoEventWireup="false" Inherits="Cookieless2" %>
<HTML>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label id="lblInfo" style="Z-INDEX: 101; LEFT: 30px; POSITION: absolute; TOP: 27px" runat="server" Width="576px" Height="160px" Font-Bold="True" Font-Names="Verdana" Font-Size="Large"></asp:Label>
</form>
</body>
</HTML>

--%>

<%--
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public class Cookieless2 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblInfo;

private void Page_Load(object sender, System.EventArgs e)
{
if (Session["test"] != null)
{
lblInfo.Text = "Successfully retrieved " + (string)Session["test"];
}
else
{
lblInfo.Text = "Session information not found.";
}
}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}


--%>


Faye_DBAAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

David H.H.LeeCommented:
Hi Faye_DBA,
>>My question is about base.OnInit(e); in Cookieless1.aspx.cs
What does it do?

When notified by this method, server controls must perform any initialization steps that are required to create and set up an instance. In this stage of the server control's lifecycle, the control's view state has yet to be populated. Additionally, you can not access other server controls when this method is called either, regardless of whether it is a child or parent to this control. Other server controls are not certain to be created and ready for access.

Check this MSDN article:
http://msdn.microsoft.com/en-us/library/system.web.ui.control.oninit(VS.71).aspx

>>Also: What does the following code accomplish?
private void InitializeComponent()

This function will initialize all your components on the form


>>I am interested to know what exactly happens on the page_Load()?
What is the difference between not coding for these and let the page life cycle take it course?

The Page_Load event is triggered when a page loads, and ASP.NET will automatically call the subroutine Page_Load

Check this for further details:
http://www.w3schools.com/aspnet/aspnet_events.asp
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Applications

From novice to tech pro — start learning today.