母版页模块覆盖

时间:2009-04-06 19:49:41

标签: .net asp.net master-pages httpmodule

我有一个通过PreInit()上的HTTPModule设置的母版页。欢乐时光!问题是由于布局问题,我需要在几页上覆盖masterpagefile值。谁知道最好的方法?

我尝试在我的页面上添加一个Page_Preinit,但它在我的模块中的PreInit()之前执行,因此最终会在那里重置。我想也许我应该在我的页面中更新一个上下文变量(类似于我可能在我的模块中分支的masterSetAtPage)..对此有何想法?

我在VB.Net工作,但C#示例也可以。

1 个答案:

答案 0 :(得分:1)

据推测,您当前的代码看起来有点像这里描述的代码......

http://www.odetocode.com/articles/450.aspx

如果是这样,那么您可以更改连接PreInit的代码,看起来像这样......

if (page != null && String.IsNullOrEmpty(page.MasterPageFile))
{
    page.MasterPageFile = "~/Master1.master";
}

然后任何使用它自己的页面指令来设置母版页文件的页面都会避免被连接到“默认”母版页。

如果您需要以编程方式执行此操作,那么此代码......

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    this.MasterPageFile = "cheese.master";
}

...在您的Page的代码背后可以解决问题。显然,这些代码只会添加到需要特殊行为的页面中。