0

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

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

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

4

1 回答 1

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";
}

...在你的页面代码后面会做的伎俩。显然,此代码只会添加到需要特殊行为的页面中。

于 2009-04-06T20:07:34.533 回答