Tôi đang so sánh biến phiên với chuỗi để kiểm tra xem loại đăng nhập có phải là quản trị viên hay không.so sánh giá trị biến phiên với chuỗi
Mã tôi đang sử dụng:
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";
}
Vì vậy, đầu tiên tôi kiểm tra nếu có người dùng đã đăng nhập hay không. Nếu người dùng đăng nhập thành công, biến phiên "loggedInUsername" sẽ có giá trị của tên người dùng. Nếu biến phiên "loggedInUsername" không trống, nó sẽ kiểm tra biến phiên "loggedInUserType" cho loại người dùng đã đăng nhập.
Đây là điều kỳ lạ, giá trị của "loggedInUserType" chính xác là "Quản trị viên" mà không có "", ở hàm if nơi tôi so sánh biến phiên với chuỗi "Quản trị viên" đang bị bỏ qua và chuyển đến người khác.
Tất cả các biến session đang nhận được giá trị khi người dùng đăng nhập.
Dưới đây là số liệu mà tôi đang sử dụng để đăng nhập và kỷ lục này là kỷ lục duy nhất trong đó có một loại "Administrator".
Có phương pháp nào khác để so sánh một biến phiên thành một chuỗi
Làm thế nào để bạn có nghĩa là nó đang được bỏ qua? Nó có đi vào câu khác không? Nó có thể là một vấn đề đúc. Hãy thử một trong hai Object.ReferenceEquals (a, b) hoặc "Administrator" .Equals (Session ["..."]) –
Sử dụng [Nhà cung cấp tư cách thành viên] (http://msdn.microsoft.com/en-us/library/ yh26yfzy.aspx) thay vào đó. –