2012-05-21 175 views
5

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

代码:

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

是否有任何其他的方法来会话变量比较字符串

+0

你的意思是它被忽略?它会进入else语句吗?这可能是一个铸造问题。尝试使用Object.ReferenceEquals(a,b)或“Administrator”.Equals(Session [“...”]) –

+1

使用[Membership provider](http://msdn.microsoft.com/zh-cn/library/改为yh26yfzy.aspx)。 –

回答

3

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

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

是的,铸造到字符串工作,谢谢 – drinu16

1

试试这个:

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

尝试

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

+0

此方法也适用:)但我不知道我是否可以标记2答案xD – drinu16

0

你确定所有的空格都是tr immed从会话结束[“loggedInUserType”]?

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

Session集合返回Object类型的值,所以当你比较,为一个字符串,你会被比较对象引用的值,不比较字符串值。

投的对象引用string

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

你可以这样做:

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

if (session == "Administrator") 

或您的Session可以与干将特定类。

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

这样,不需要检查空值监守Convert.ToString处理空值返回“”空字符串

相关问题