我有一个类实现了IHttpModule接口.
想在里面实现对每个页面进行主题设置的功能,就像在每个页面里加
void Page_PreInit(object sender,EventArgs e)
{
Theme="……";
}
这句话一样.但是在Void Init()方法里只能访问到HttpApplication对象,
我如何才能对本次请求的页面进行Theme属性设置呢?或者说如何通过HttpApplication对象访问到Page对象呢?
请大家指教.
想在里面实现对每个页面进行主题设置的功能,就像在每个页面里加
void Page_PreInit(object sender,EventArgs e)
{
Theme="……";
}
这句话一样.但是在Void Init()方法里只能访问到HttpApplication对象,
我如何才能对本次请求的页面进行Theme属性设置呢?或者说如何通过HttpApplication对象访问到Page对象呢?
请大家指教.
如果是页面的话,这个Handler可以转换成Page,这就是当前页面的引用,然后就操作吧。
public class Page : TemplateControl, IHttpHandlerPage就是个Handler, 只要把CurrentHandler强制转换成Page,就可以操作当前的页面对象了,当然要求这个请求是让一个Page处理的
你看下我的代码:public class Themes : System.Web.UI.Page, System.Web.IHttpModule
{
#region IHttpModule 成员 void System.Web.IHttpModule.Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(changeTheme);
}
#endregion //改变整站主题
private void changeTheme(object source, EventArgs e)
{
HttpContext context = ((HttpApplication)source).Context;
Page page = context.CurrentHandler as Page;//page一直是为空
}
{
Page p = HttpContext.Current.CurrentHandler as Page;
if (p != null)
{
p.Theme = "Default";
}
}
我随便打开一个.aspx的页面都不行啊。
要不行你试试
之前我已经在Web.config里设置了<pages theme="Winter">,这是问题1。还有一个问题是,我用你的方法给Page对象设置了值“Spring”但是这个页面还是没有应用这个主题,
而是我之前在Web.config里设置的主题,这是怎么回事呢?
还希望大家多帮忙啊!分不够可以再加.