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

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

我正在使用的代码:

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”进行比较,跳过并转到else。

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

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

链接到图像

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

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

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

尝试

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

试试这个:

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

你确定从Session [“loggedInUserType”]的末尾修剪了所有空格吗?

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

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

将对象引用转换为string

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

你可以这样做 :

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

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

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

这样,无需检查null值,因为Convert.ToString句柄Null值返回“”空字符串