Showing posts with label PageController. Show all posts
Showing posts with label PageController. Show all posts

Sunday, December 7, 2008

Page Controller


Let’s say in every page we need to get username and email ID, there are 2 ways we can do it. We could use file include (.inc files) or use page cotroller logic

SiteSettings has 2 properties, Name and Email ID. You can have your own logic to fetch information from database – may be use Table data gateway logic


SiteSettings.cs


using System;

using System.Data;

using System.Configuration;

///

/// Summary description for SiteSettings

///

public class SiteSettings

{

public SiteSettings()

{

}

private string _name;

public string Name

{

get { return _name; }

set { _name = value; }

}

private string _emailAddress;

public string EmailAddress

{

get { return _emailAddress; }

set { _emailAddress = value; }

}

#region Load functions

public void FetchData()

{

//implement your logic to fetch data from config file, DB or other datasources

_name = "xyz";

_emailAddress = "xyz@abc.com";

}

#endregion

}


Create a new BasePage class derived from System.Web.UI.Page. Create an event for ‘Init’ . In the event, load SiteSettings values


BasePage.cs


using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

///

/// Summary description for BasePage

///

public class BasePage : Page

{

protected SiteSettings siteSettings;

public BasePage()

{

Init += new EventHandler(BasePage_Init);

}

void BasePage_Init(object sender, EventArgs e)

{

siteSettings = new SiteSettings();

siteSettings.FetchData();

}

}

Now that we have the base class let’s implement BasePage


Page1.cs


using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class Page1 : BasePage

{

protected override void OnInit(EventArgs e)

{

base.OnInit(e);

this.Load += new EventHandler(Page_Load);

}

//protected System.Web.UI.WebControls.Label pageNumber;

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

DisplaySettings();

}

pageNumber.Text = "2";

}

private void DisplaySettings()

{

eMail.Text = siteSettings.EmailAddress;

userName.Text = siteSettings.Name;

}

}