将数据发送到我的母版页

Sending data to my master page

我正在 Intranet 上工作(纠正错误并添加功能)- 但管理员选项卡的显示存在问题,它以任何一种方式显示!

我现在可以通过以下 SQL 请求知道该员工是否是管理员:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    // Variables
    string isAdministrator;
    bool isAdmin;

    // Checks the admin status of logging in user
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
    {
        using (SqlCommand command = new SqlCommand("SELECT isAdministrator FROM Employee WHERE Login = '" + model.UserName + "'", connection))
        {
            connection.Open();
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    isAdministrator = reader[0].ToString();
                    isAdmin = Convert.ToBoolean(isAdministrator);
                    ViewData["isAdmin"] = isAdmin;
                }   
            }            
         }
     }            


      // Not relevant things related to logging in
  return View(model);
}

行为应该是:如果 isAdmin 为真,则显示“管理”选项卡(或简单地拒绝其访问),否则不显示。

但我有两个主要问题:

例如使用 ViewBag.IsAdmin = 1 如:

...
while (reader.Read())
{
    isAdministrator = reader[0].ToString();
    isAdmin = Convert.ToBoolean(isAdministrator);
    ViewBag.IsAdmin = isAdmin;
    break;
}   
...

然后在 _Layout.cshtml 中,您可以使用 ViewBag 中的变量,例如:

@if(ViewBag.IsAdmin == 1)
{
    <div>
    </div>
}

但我认为您应该寻找 SimpleMembership 功能。

那么你可以使用:

@if(HttpContext.Current.User.IsInRole("Administrator"))
{
    <div>
    </div>
}