将会话变量值与字符串进行比较

本文关键字:比较 字符串 会话 变量值 | 更新日期: 2023-09-27 18:34:45

我正在将会话变量与字符串进行比较,以检查登录类型是否为管理员。

我正在使用的代码:

if (Session["loggedInUsername"] == null)
        {
            btnLogin.Text = "Sign In";
            lblWelcome.Text = "Welcome!";
            hypManageRestaurants.Enabled = false;
            hypManageReviews.Enabled = false;
            hypPostReviews.Enabled = false;
        }
        else
        {
            if (Session["loggedInUserType"] == "Administrator")
            {
                hypManageRestaurants.Enabled = true;
                hypManageReviews.Enabled = true;
                hypPostReviews.Enabled = true;
            }
            else
            {
                hypManageRestaurants.Enabled = false;
                hypManageReviews.Enabled = false;
                hypPostReviews.Enabled = true;
            }
            lblWelcome.Text = "Welcome " + Session["loggedInUsername"];
            btnLogin.Text = "Sign Out";
        }

因此,首先我检查是否有任何用户已登录。如果用户成功登录,会话变量"loggedInUsername"将具有用户名的值。如果"loggedInUsername"会话变量不为空,它将检查"loggedInUserType"会话变量以了解登录用户的类型。

奇怪的事情来了,"loggedInUserType"的值完全是"管理员",没有",在我正在将会话变量与字符串"管理员"进行比较的 if 函数中,被跳过并转到其他。

所有用户登录时,所有会话变量都会获取值。

以下是我用来登录的数据,此记录是唯一具有"管理员"类型的记录。

链接到图像

有没有其他方法可以将会话变量与字符串进行比较

将会话变量值与字符串进行比较

将对象类型值强制转换为字符串

((string)Session["loggedInUserType"]) == "Administrator"

试试

if(Convert.ToString(Session["loggedInUserType"]) == "Administrator) ...

试试这个:

if (Session["loggedInUserType"].ToString().Trim()
        .Equals("Administrator", StringComparison.InvariantCultureIgnoreCase))

Session 集合返回类型 Object 的值,因此当您将其与字符串进行比较时,您将比较对象引用的值,而不是比较字符串值。

将对象引用强制转换为string

if (((string)Session["loggedInUserType"]) == "Administrator")

您是否确定所有空格都已从会话["loggedInUserType"]的末尾修剪

if (Session["loggedInUserType"].ToString() == "Administrator")
你可以

这样做:

string session = (string)Session["loggedInUserType"]
if (session == "Administrator")

或者您的Session可以在具有 getter 的特定类中。

if(Convert.ToString(Session["loggedInUserType"]) == "Administrator)

这样,就不需要检查空值,因为 Convert.ToString 处理空值返回 " 空字符串