我想使用另一个类函数
更改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参数传递"。
答案 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
属性。因此不再需要参考。