PageCommon: Master page like page to keep homogeneous style across pages.

This commit is contained in:
2015-05-25 00:03:25 +02:00
parent 98bf48ada7
commit ec218da1f9
4 changed files with 176 additions and 5 deletions

View File

@@ -6,7 +6,7 @@ using Scrummer.Code.Controls;
namespace Scrummer.Code.Pages
{
public class FrmError : Page
public class FrmError : PageCommon
{
Exception _ex = null;
@@ -18,11 +18,24 @@ namespace Scrummer.Code.Pages
void FrmError_Init(object sender, EventArgs e)
{
CLabel lblMessage = new CLabel { ID = "lblMessage", Text = _ex.Message, Tag = "P" };
Title = "Error";
CLabel lblErrorTitle = new CLabel { Text = "Error", Tag = "h2" };
Controls.Add(lblErrorTitle);
CLabel lblMessage = new CLabel { Tag = "P" };
lblMessage.Text = String.Format("<b>{0}:</b> {1}", "Message",HttpUtility.HtmlEncode(_ex.Message));
Controls.Add(lblMessage);
CLabel lblStackTrace = new CLabel { ID = "lblStackTrace", Text = _ex.StackTrace, Tag = "P" };
Controls.Add(lblStackTrace);
CLabel lblStacktraceTitle = new CLabel { Tag = "p" };
lblStacktraceTitle.Text = String.Format("<b>{0}:</b>", "Stacktrace");
Controls.Add(lblStacktraceTitle);
Panel pnlStacktrace = new Panel();
pnlStacktrace.CssClass = "divCode";
Controls.Add(pnlStacktrace);
LiteralControl litStackTrace = new LiteralControl(
String.Format("<pre><code>{0}</code></pre>", HttpUtility.HtmlEncode(_ex.StackTrace)));
pnlStacktrace.Controls.Add(litStackTrace);
}
}
}

View File

@@ -0,0 +1,92 @@
using System;
using System.Reflection;
using System.Text;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Scrummer.Code.Controls;
namespace Scrummer.Code.Pages
{
public class PageCommon : Page
{
#region Declarations
private HtmlHead _head;
private HtmlGenericControl _body;
private HtmlForm _form;
private Panel _pnlContainer = new Panel();
#endregion
#region Properties
public new ControlCollection Controls
{
get { return _pnlContainer.Controls; }
}
#endregion
#region Life cycle
public PageCommon()
{
Init += PageCommon_Init;
PreRender += PageCommon_PreRender;
}
void PageCommon_Init(object sender, EventArgs e)
{
CreateControls();
}
void PageCommon_PreRender(object sender, EventArgs e)
{
_head.Title = string.IsNullOrEmpty(Title) ? Globals.Title : String.Format("{0}{1}{2}", Globals.Title, Globals.TitleSeparator, Title);
}
#endregion
#region Private methods
private void CreateControls()
{
Context.Response.Charset = Encoding.UTF8.WebName;
var doctype = new LiteralControl("<!DOCTYPE html>\n");
base.Controls.Add(doctype);
var html = new HtmlGenericControl("html");
base.Controls.Add(html);
_head = new HtmlHead();
html.Controls.Add(_head);
_head.Controls.Add(new HtmlMeta { HttpEquiv = "content-type", Content = "text/html; charset=utf-8" });
_head.Controls.Add(new HtmlMeta { Name = "author", Content = Globals.Author });
_head.Controls.Add(new HtmlMeta { Name = "Copyright", Content = Globals.Copyright });
Assembly asm = Assembly.GetExecutingAssembly();
string version = asm.GetName().Version.ToString();
_head.Controls.Add(new LiteralControl(String.Format("<script type=\"text/javascript\" src=\"ScriptsBundler?t={0}\"></script>\n", version)));
_head.Controls.Add(new LiteralControl(String.Format("<link href=\"StylesBundler?t={0}\" type=\"text/css\" rel=\"stylesheet\"/>\n", version)));
_body = new HtmlGenericControl("body");
html.Controls.Add(_body);
_form = new HtmlForm { ID = "formMain" };
_body.Controls.Add(_form);
var pnlHeader = new Panel { CssClass = "divHeader" };
_form.Controls.Add(pnlHeader);
var lblTitle = new CLabel { Text = Globals.Title, Tag = "h1" };
pnlHeader.Controls.Add(lblTitle);
_pnlContainer.CssClass = "divContent";
_form.Controls.Add(_pnlContainer);
}
#endregion
}
}