我将会话变量与字符串进行比较,以检查登录类型是否为管理员。
我正在使用的代码:
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”进行比较,并跳转到其他
当用户登录时,所有会话变量都会获得值。
以下是我用于登录的数据,此记录是唯一具有“管理员”类型的记录。
是否有其他方法可以将会话变量与字符串进行比较
答案 0 :(得分:4)
尝试
if(Convert.ToString(Session["loggedInUserType"]) == "Administrator) ...
答案 1 :(得分:3)
将对象类型值转换为字符串
((string)Session["loggedInUserType"]) == "Administrator"
答案 2 :(得分:1)
试试这个:
if (Session["loggedInUserType"].ToString().Trim()
.Equals("Administrator", StringComparison.InvariantCultureIgnoreCase))
答案 3 :(得分:0)
你确定所有的空格都是从会话末尾修剪出来的吗[“loggedInUserType”]?
答案 4 :(得分:0)
if (Session["loggedInUserType"].ToString() == "Administrator")
答案 5 :(得分:0)
Session
集合返回类型为Object
的值,因此当您将其与字符串进行比较时,您将比较对象引用的值,而不是比较字符串值。
将对象引用转换为string
:
if (((string)Session["loggedInUserType"]) == "Administrator")
答案 6 :(得分:0)
你可以这样做:
string session = (string)Session["loggedInUserType"]
if (session == "Administrator")
或您的Session
可以在具有getter的特定类中。
答案 7 :(得分:0)
if(Convert.ToString(Session["loggedInUserType"]) == "Administrator)
这样,无需检查null值,因为Convert.ToString句柄Null值返回“”空字符串