使用功能设置主页文件

时间:2014-06-17 07:53:54

标签: c# asp.net

我想使用另一个类函数

更改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参数传递"。

1 个答案:

答案 0 :(得分:4)

您可以在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属性。因此不再需要参考。