.net 母版页模块覆盖

.net 母版页模块覆盖,.net,asp.net,master-pages,httpmodule,.net,Asp.net,Master Pages,Httpmodule,我有一个母版页,它是通过PreInit()上的HTTPModule设置的。快乐时光!问题是,由于布局问题,我需要在几个页面上覆盖masterpagefile值。有人知道最好的方法吗 我尝试在我的页面上添加一个Page_Preinit,但它是在我的模块中的Preinit()之前执行的,因此它最终在那里被重置。我在想也许我应该在我的页面中更新一个上下文变量(比如masterSetAtPage,我可以在我的模块中从它分支出来)。。有什么想法吗 我在VB.Net中工作,但C#示例也可以。可能您当前的代码

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

我尝试在我的页面上添加一个Page_Preinit,但它是在我的模块中的Preinit()之前执行的,因此它最终在那里被重置。我在想也许我应该在我的页面中更新一个上下文变量(比如masterSetAtPage,我可以在我的模块中从它分支出来)。。有什么想法吗


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

可能您当前的代码看起来有点像这里描述的代码

如果是这样,那么您可以更改连接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";
}

。。。在你的页面中,代码隐藏会起作用。显然,此代码只会添加到需要特殊行为的页面。

您是否可以更新PreInit代码以指定所需的母版页,或者母版页是否需要根据加载的内容进行更新?您是否可以更详细地说明您想要做什么?最大的障碍通常是让PreInit成功设置母版页,为什么不直接设置它,或者将它设置为另一个呢?看起来不错,但是,我实际上需要以编程方式设置母版,所以我不能在page指令中设置静态值。好的,这样做。。。受保护的重写void OnPreInit(EventArgs e){base.OnPreInit(e);this.MasterPageFile=“cheese.master”}。。。在您的页面中应该可以工作。我知道这几乎就是马克(上图)所建议的——尽管他展示了OnInit而不是OnPreInit。@Martin-是的,我把那个弄砸了。。)PreInit是正确的位置。