无法更改按钮链接的可见性

3

Control.Visible属性可以将按钮的可见性更改为true或false。但是由于某些原因,当我尝试将可见性更改为false时,它不起作用。

 if (Session["UserGroup"] == "Group2")
      {
           someLink.Visible = false;
      }

someLink最初被设置为true。但是,尽管"Group2"用户组的用户登录,它仍然保持为true。

我认为这与我的SQL连接无关,因为使用此方法可以正确显示该用户的名称。

 userNameLabel.Text = "Logged in as ";
 userNameLabel.Text += Session["Fname"] + " " + Session["Lname"];

关于存储会话,这是我所拥有的:
 Session["UserName"] = dr[0].ToString();
 Session["Fname"] = dr[1].ToString();
 Session["Lname"] = dr[2].ToString();
 Session["UserGroup"] = dr[3].ToString();
 ...

你确定 Session["UserGroup"] 的值是 "Group2",而不是带有一些尾随空格的 "Group2 "(我见过 SQL Server 返回这样的数据),或者可能是大小写不同,你可能需要检查一下! - Suresh
1
什么是“它不起作用”?它是否进入了这一行 - someLink.Visible = false; 尝试使用序数进行比较,同时忽略大小写。 - Yosi Dahari
1
你尝试过调试应用程序吗?当你调试应用程序时,if块内的代码是否执行? - Suresh
4
你尝试过这样写吗?if (Session["UserGroup"].ToString() == "Group2") - Yuriy Galanter
1
当您将任何内容放入Session中时,它会被转换为对象。因此,从Session获取时,您总是需要将其强制转换回相应的类型。 - afzalulh
显示剩余5条评论
1个回答

0

很明显你的代码在这一点上失败了 if (Session["UserGroup"] == "Group2")。需要将Session["UserGroup"]转换为字符串。

string usergroup = (string)Session["UserGroup"];

if (usergroup == "Group2"){
    someLink.Visible = false;
}

这应该可以工作。不过我还没有测试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接