如何动态设置母版页

本文关键字:设置 母版页 动态 何动态 | 更新日期: 2023-09-27 18:36:31

我想根据用户ID为同一页面设置不同的母版页(即,对于一个用户,它必须设置一个母版页,对于另一个用户,它必须设置另一个母版页)。我们可以为任何页面动态设置不同的母版页吗?

如何动态设置母版页

void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/MyMaster.master";
}

解释: 可以将母版页动态附加到内容页。由于母版页和内容页是在页面处理的初始化阶段合并的,因此必须在此之前分配母版页。通常,在 PreInit 阶段动态分配母版页。

请注意MSDN上的这篇文章:

http://msdn.microsoft.com/en-us/library/c8y19k6h.aspx

void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "~/NewMaster.master";
}

可以通过设置页面的 MasterPageFile 属性来实现。但是,如果在 PreInit 事件之后调用它将引发InvalidOperationException。查看 ASP.NET 页面生命周期

只能在 PreInit 事件中设置 MasterPageFile 属性;尝试在 PreInit 事件之后设置 MasterPageFile 属性将引发 InvalidOperationException 异常。如果 MasterPageFile 属性无效,则会在页面生命周期的稍后阶段引发 HttpException 类型的异常,但在 PreInit 事件中设置该属性时不会引发异常。