代码之家  ›  专栏  ›  技术社区  ›  madcolor

母版页模块覆盖

  •  0
  • madcolor  · 技术社区  · 16 年前

    我有一个masterpage,它是通过preinit()上的httpmodule设置的。快乐时光!问题是由于布局问题,我需要重写几页上的masterpagefile值。有人知道最好的方法吗?

    我尝试在我的页面上添加一个page_preinit,但是它在我的模块中的preinit()之前执行,所以它最终在那里被重置。我在想也许我应该在我的页面中更新一个上下文变量(比如mastersetatpage,我可能在模块中对此进行分支)。有什么想法吗?

    我在vb.net中工作,但是C示例也可以。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Martin Peck    16 年前

    大概您当前的代码看起来有点像这里描述的代码…

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

    如果是这样,那么您可以更改挂接preinit的代码,使其看起来像这样…

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

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

    如果您需要通过编程来完成此操作,则此代码…

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

    …在你的页面的代码背后会做的技巧。显然,这段代码只会添加到需要特殊行为的页面中。