problem przy odwołaniu do sesji

0

Witam.MOj problem to...
Nie można zastosować operatora „==” do argumentów operacji typu „object” lub „int”.
Jak zmieniam na = to znowuż problem ze znakiem &
Nie można zastosować operatora „&&” do argumentów operacji typu „object” lub „object”.
a jak zmianiam na & to to znowuż nie moge & wiec juz nie wiem...

protected void Page_Load(object sender, EventArgs e)
    {
        this.Label1.Visible = false;
        HyperLink1.Visible = false;
        HyperLink2.Visible = false;

        if ((Session["zalogowany"] == 1) && (Session["zalogowany"] == 2))
        {
            this.zalogowany.Text="aktualnie jestes zalogowany";
           
        }
        else if ((Session["zalogowany"] == 0))
        { 
            this.zalogowany.Text="aktualnie jestes wylogowany";
        }
        
    }
0

Operator == to operator porównania, a = to przypisania, więc zmiana jednego na drugi jest jakąś pomyłką.
Operator && to operator logiczny "i", a & to bitowy "i".
Indekser na Session zwraca object, żeby porównać go z intem, musisz zrzutować go na int. Oczywistą oczywistością jest, że rzutowany object musi być intem, aby zrzutować go na int, nie może być także null'em (to tak uprzedzając kolejne problemy).

Pierwszy twój warunek jest bez sensu, bo jak zalogowany może być równocześnie 1 i 2? Chyba chciałeś użyć tak logicznego "lub", czyli ||.

0

No tak == to porówanie czyli jest ok, zagapiłem sie faktycznie i miało byc lub || .. wąłsnie chodzi mi o to rzutowanie.. jak to zapisac więc.?

0

Zazwyczaj nie używa się bezpośrednio czytania z Session, bo takiej wartości może tam nie być, dlatego opakowuje się to we właściwość.

private int Zalogowany
{
  get {return Session["zalogowany"] != null ? (int)Session["zalogowany"] : 0;}
  set {Session["zalogowany"]  = value;}
}
// lub
private bool CzyZalogowany 
{
  get 
  {
    if ( Session["zalogowany"] != null)
    {
      int val = (int)Session["zalogowany"];
      return (val == 1 || val == 2);
    }
    else
      return false;
  }
}
0

dziękuje Ci serdecznie.! Pozbawiłeś mnie pewnie kilku godzin pracy:) pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1