使用函数设置母版页文件

本文关键字:母版页 文件 设置 函数 | 更新日期: 2023-09-27 18:09:07

我想使用另一个类函数更改masterpagefile

的例子:

public class XYZClass 
{
    public void CheckLogin(object ses,bool ipb,ref MasterPage page)
    {
        if (!(ses == null))
        {
            if (ses.ToString() == "Admin")
                page.MasterPageFile = "~/Admin.master";
            else
                page.MasterPageFile = "~/MasterPage.master";
        }
        else 
        {
            Response.Redirect("~/frmLogin.aspx");
        }
    }
}
public partial class frmDoctorHistory : System.Web.UI.Page
{
    BLLcheckLogin checkLogin = null;    
    protected void Page_PreInit(object sender, EventArgs e)
    {
        checkLogin = new BLLcheckLogin();
        checkLogin.CheckLogin(Session["usertype"], IsPostBack, ref MasterPageFile);
    }
}

,我从另一个aspx源文件调用这个函数,它给了我一个错误,像"属性、索引器或动态成员访问不能作为out或ref参数传递"。

使用函数设置母版页文件

设置母版页的时间不能晚于PreInit事件

参考MSDN中的代码示例。

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

您必须将当前代码重写为:

public void CheckLogin(object ses,bool ipb, Page page)
{
    if (!(ses == null))
    {
        if (ses.ToString() == "Admin")
            page.MasterPageFile = "~/Admin.master";
        else
            page.MasterPageFile = "~/MasterPage.master";
    }
    else 
    {
        Response.Redirect("~/frmLogin.aspx");
    }
}
protected void Page_PreInit(object sender, EventArgs e)
{
    checkLogin = new BLLcheckLogin();
    MasterPage mp;
    checkLogin.CheckLogin(Session["usertype"], IsPostBack, this);
}

我改变了你的代码来传递Page而不是MasterPageFile属性。