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

Leo*_*Leo 1 asp.net asp.net-mvc master-pages

在我的 Web 项目 (ASP.NET) 中,我需要 2 个不同的母版页。一种适用于“管理员”等用户,另一种适用于普通用户。我在哪里可以指明要加载的母版页?如何根据用户加载正确的母版页?

Shy*_*yju 5

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

当管理员登录成功时,设置这个会话变量

 Session["adminUserName"]=txtUserName.Text;
Run Code Online (Sandbox Code Playgroud)

然后写一个方法来检查当前用户是否是admin

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

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

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

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

public ActionResult Index()
{
 if(IsAdmin())
 {
   return View("Index", "MasterAdmin");
 }
 else
 {
   return View("Index", "MasterNormal");
 }
}
Run Code Online (Sandbox Code Playgroud)