使用模板和主题能够使网站所有页面共享设计和外观,然而,有一些通用行为也要求共享,比如:显示网站的统计信息,更改页面主题元素等等;
这里比较好的做法是:写一个BasePage类,让所有的页面都继承自它,而不是从标准的System.Web.UI.Page类继承。这样可以通过重写该类中的On***方法来处理页面上的任何事件;下面以做选择页面主题为例;
1.首先写BasePage类;
public class BasePage : System.Web.UI.Page
{
protected override void OnPreInit(EventArgs e)
{
string id = Globals.ThemesSelectorID;
if (id.Length > 0)
{
// EVENTTARGET为主题选择框的隐藏字段,通过它可以知道是否是由选择主题而使页面会送;
if (this.Request.Form["__EVENTTARGET"] == id && !string.IsNullOrEmpty(this.Request.Form[id]))
{
this.Theme = this.Request.Form[id];
this.Session["CurrentTheme"] = this.Theme;
}
else
{
if (this.Session["CurrentTheme"] != null)
this.Theme = this.Session["CurrentTheme"].ToString();
}
}
base.OnPreInit(e);
}
}
2.由于使用到模板,所以让模板继承自这个类;
public partial class Template : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
3.其他页面跟使用正常使用模板时一样;
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="MB.TheBeerHouse.UI._Default" Title="The Beer House" MasterPageFile="~/Template.master" %>