【问题标题】:comparing session variable value to a string将会话变量值与字符串进行比较
【发布时间】:2012-05-21 14:14:27
【问题描述】:

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

我正在使用的代码:

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”的值正好是“Administrator”,没有“”,在 if 函数中,我将会话变量与字符串“Administrator”进行比较,被跳过并转到否则。

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

以下是我用于登录的数据,该记录是唯一具有“管理员”类型的记录。

link to image

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

【问题讨论】:

  • 你的意思是它被跳过了?它是否进入 else 语句?应该是选角问题。尝试 Object.ReferenceEquals(a,b) 或 "Administrator".Equals(Session["..."])

标签: c# asp.net session-variables


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试

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

    【讨论】:

    • 这个方法也有效 :) 但我不知道我是否可以标记 2 个答案 xD
    【解决方案3】:

    试试这个:

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

    【讨论】:

      【解决方案4】:

      您确定从 Session["loggedInUserType"] 的末尾开始修剪所有空格吗?

      【讨论】:

        【解决方案5】:
        if (Session["loggedInUserType"].ToString() == "Administrator")
        

        【讨论】:

          【解决方案6】:

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

          将对象引用转换为string:

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

          【讨论】:

            【解决方案7】:

            你可以这样做:

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

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

            【讨论】:

              【解决方案8】:
              if(Convert.ToString(Session["loggedInUserType"]) == "Administrator)
              

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

              【讨论】:

                猜你喜欢
                • 2018-05-01
                • 1970-01-01
                • 2018-03-17
                • 1970-01-01
                • 2012-08-05
                • 2015-10-03
                • 2015-11-21
                • 2015-08-14
                • 2015-01-22
                相关资源
                最近更新 更多