为不同的用户加载不同的母版页

时间:2011-12-25 23:38:29

标签: asp.net asp.net-mvc master-pages

在我的Web项目(ASP.NET)中,我需要2个不同的母版页。一个用于像“Admin”这样的用户,一个用于普通用户。我在哪里可以指出要加载的主页?如何加载正确的母版页,具体取决于用户?

2 个答案:

答案 0 :(得分:4)

当您的管理员用户尝试登录时,请检查数据库的用户名和密码,如果登录凭据有效,请设置会话变量以指示这是管理员会话。然后你可以通过检查会话值来告诉你当前用户是管理员还是普通用户,从而得到一个返回true的方法。

当admin登录成功时,设置此会话变量

 Session["adminUserName"]=txtUserName.Text;

然后编写一个方法来检查当前用户是否是管理员

  public bool IsAdmin()
  {
    if(Session["adminUserName"]!=null)
    {
        return true;
    }
    else
    {
        return false;
    }
  }

将此方法放在一个公共位置(如基类左右)并在页面生命周期中检查并加载相应的母版页。

   void BasePage_PreInit(object sender, EventArgs e)
    {
        if(IsAdmin())
        {
           MasterPageFile = "~/MasterAdmin.master";
        }
        else
        {
             MasterPageFile = "~/MasterNormal.master";
        }
    }

如果它是ASP.NET MVC应用程序,您可以在ActionMethod中检查它。

public ActionResult Index()
{
 if(IsAdmin())
 {
   return View("Index", "MasterAdmin");
 }
 else
 {
   return View("Index", "MasterNormal");
 }
}

答案 1 :(得分:0)

在代码隐藏中处理Page_PreInit事件并根据自己的喜好设置MasterPageFile属性。