2012-05-21 142 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處理空值返回「」空字符串

相關問題