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; using NPetshop.Presentation; using NPetshop.Presentation.UserActions; using NUserControls = NPetshop.Presentation; namespace NPetshop.Web { /// /// Act as a router for incoming request /// public class Default : System.Web.UI.Page, IController { protected System.Web.UI.WebControls.PlaceHolder placeholder; protected string currentView = string.Empty; protected System.Web.UI.WebControls.Label LabelStatus; protected System.Web.UI.WebControls.ValidationSummary ValidationSummary1; protected string nextView = string.Empty; #region IController public string CurrentView { get { return this.currentView; } set { this.currentView=value; } } public string NextView { get { return this.nextView; } set { this.nextView=value; } } #endregion private void Page_Load(object sender, System.EventArgs e) { if ( ViewState["CurrentView"]!=null ) { currentView = (string)ViewState["CurrentView"]; Context.Items.Add("currentView",currentView); nextView = (string)ViewState["NextView"]; Context.Items.Add("nextView",nextView); } else { // Go to Home) currentView = WebViews.STARTUP; nextView=null; } if (Request.QueryString["action"] != null) { currentView = Request.QueryString["action"]; nextView=null; } // Make the right control visible NUserControls.UserControl userControl = (NUserControls.UserControl) LoadControl("UserControls/"+currentView+".ascx"); userControl.ID = "ID_" + currentView; // // if (currentView == "Error") // { // LabelStatus.Controls.Add(userControl); // } // else // { placeholder.Controls.Add(userControl); // } userControl.CurrentController = this; } protected override void OnError(EventArgs e) { System.Exception oops = Server.GetLastError(); Context.Items.Add("stackTrace",Server.GetLastError().StackTrace); Context.Items.Add("messageError",Server.GetLastError().Message); if (Server.GetLastError().InnerException!=null) { Context.Items.Add("innerMessageError",Server.GetLastError().InnerException.Message); } else { Context.Items.Add("innerMessageError", string.Empty); } Context.Items.Add("sourceError",Server.GetLastError().Source); Context.Items.Add("errorView",this.currentView.ToString()); Server.ClearError(); Server.Transfer("default.aspx?action=Error"); } protected override void OnPreRender(System.EventArgs e) { if ( nextView==null ) { return; } if ( currentView!=nextView ) { // Show the next view NUserControls.UserControl nextControl = (NUserControls.UserControl) LoadControl("UserControls/"+nextView+".ascx"); nextControl.ID = "ID_" + nextView; placeholder.Controls.Add(nextControl); nextControl.CurrentController = this; nextControl.DataBind(); // Delete last view NUserControls.UserControl lastControl = (NUserControls.UserControl) placeholder.FindControl("ID_"+currentView); placeholder.Controls.Remove(lastControl); currentView = nextView; } else { Control currentControl = placeholder.FindControl("ID_"+currentView); currentControl.DataBind(); } ViewState["CurrentView"]= currentView; ViewState["NextView"] = nextView; } #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); } /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } #endregion } }