2016-05-18 2 views
0
if ((Session["UserName"] != null && Session["LoginType"] == "Admin") || (Session["UserName"] != null && Session["LoginType"] == "Employee")) 
{ 
    TotalMarketBalance(); 
} 

ответ

0

Я предлагаю изменить if -statement к этому:

if (Session["UserName"] != null && 
    (Session["LoginType"] as string == "Admin" || 
     Session["LoginType"] as string == "Employee") 
    ) 

Session[string key] возвращает object. И если вы сравниваете object с чем-то, используя ==, вы делаете сравнение ссылок. И строковый литерал (например, "Admin") никогда не будет иметь такую ​​же ссылку, как этот объект, даже если этот объект - это строка.

Отбрасывая object в string, компилятор знает, что он должен вызывать методы равенства string, которые сравнивают содержимое строки, а не их ссылки.

Конечно, вы можете сделать прямой перевод ((string)Session["LoginType"]) или позвонить по телефону ToString(). Но первый будет генерировать исключение, если (по какой-то странной причине) объект возврата не строка. Второй будет бросать NullReferenceException, если (по какой-то странной причине) значение по-прежнему null.

+0

Session [ "UserName"] = нуль = верно, но (Session [ "LoginType" ] как строка == «Администратор» || Сессия ["LoginType"] как строка == «Сотрудник») не показывает true или false –

+0

@ Dayanand Почему бы и нет? Что еще это будет показывать? Вы попробовали? –

+0

ya. работает правильно. но когда я держу указатель мыши на знаке == во время отладки. он не показывает true или false. почему ... –

0

Изменение Session["LoginType"] в Session["LoginType"].ToString()

0

вы также можете бросить в строку:

(string)Session["LoginType"] == "Admin" 

Это как пример делается в документации Reading Values From Session State

+0

FYI, эта ссылка применима к VS2003 и гласит: «Документ архивирован и информация здесь может быть устаревшей». Хотя это правильно и действительно, пожалуйста, не связывайтесь с документами, которые не являются текущими. – ChrisBint

+0

Session ["UserName"]! = Null = true, но (строка) Session ["LoginType"]. ToString() == "Employee") не показывает true или false –

Смежные вопросы

 Смежные вопросы