2017-01-19 4 views
0

Ich habe ein Problem mit einer Variablen.Variable in anderen Funktionen hat immer den Wert Null

protected void godziny_Click(object sender, EventArgs e) 
    { 
     var id_filmu = Request["id"]; 
     var data = Request["data"]; 
     var godzina = TimeSpan.Parse(hidden2.Value); 
     var query = from h in bazaDC.seanses 
        where h.godzina == godzina && h.id_filmu == int.Parse(id_filmu) && h.data == DateTime.Parse(data) 
        select h; 

     foreach (var a in query) 
     { 
      Session["id_seansu"] = a.id_seansu; 
     } 
    } 

id_seansu wird außerhalb der Funktion deklariert, nur in Teilklasse. Ich muss diese Variable in einer anderen Funktion erhalten:

protected void rezerwujButton_Click(object sender, EventArgs e) 
    { 
     DateTime dzisiejszaData = DateTime.Today; 
     TimeSpan godzinaRezerwacji = DateTime.Now.TimeOfDay; 

     DateTime dataZarezerwowania; 
     TimeSpan czasZarezerwowania; 
     var query = from wszystkieRezerwacje in bazaDC.rezerwacjes 
        select wszystkieRezerwacje; 



     foreach(var i in query) 
     { 
      if(i.data_rezerwacji.HasValue && i.czas_rezerwacji.HasValue) 
      { 
       dataZarezerwowania = i.data_rezerwacji.Value; 
       czasZarezerwowania = i.czas_rezerwacji.Value; 
      } 
     } 


     rezerwacje nowaRezerwacja = new rezerwacje(); 
     if (Session["id_seansu"] != null) 
     { 
      Response.Write(Session["id_seansu"]); 
     }; 

     /*nowaRezerwacja.imie_klienta = imieTextBox.Text; 
     nowaRezerwacja.nazwisko_klienta = nazwiskoTextBox.Text; 
     nowaRezerwacja.email_klienta = emailTextBox.Text; 
     nowaRezerwacja.nrtel_klienta = nrKomTextBox.Text; 
     nowaRezerwacja.numer_miejsca = Hidden1.Value; 
     nowaRezerwacja.data_rezerwacji = dzisiejszaData; 
     nowaRezerwacja.czas_rezerwacji = godzinaRezerwacji; 
     nowaRezerwacja.id_seansu = id_seansu; 



     bazaDC.rezerwacjes.InsertOnSubmit(nowaRezerwacja); 
     bazaDC.SubmitChanges();*/ 
    } 

Aber wenn ich schreiben möchte diese Variable durch Response.Write ("id_seansu") in rezerwujButton_Click Es ist immer "0". Aber wenn ich es in godziny_Click schreiben möchte, habe ich korrekten Wert. Warum erhält die Variable in einer anderen Funktion den Wert 0?

+1

Da beide Methoden nicht innerhalb des gleichen Request/Response-Zyklus aufgerufen werden. Sie müssten diesen Wert in der "Sitzung" oder einem anderen persistenten Zustandsmanager speichern. –

+0

Ok, ich habe es verstanden, aber es funktioniert immer noch nicht. In der Funktion godziny_Click habe ich den korrekten Wert, aber wenn ich versuche, Session ["id_seansu"] in rezerwujButton_Click zu schreiben, ist es immer null ... –

Antwort

1

Wenn Sie den ersten Klick ausführen, wird die Seite zurückgeben und daher der Wert der Variablen zurückgesetzt, um Persist Variable bei Postback müssen Sie entweder Sitzung oder ViewState verwenden, wenn Sie diese Variable in anderen Seiten möchten Sie können mit der Sitzung fortfahren, wenn es speziell für diese Seite ist, dann müssen Sie ViewState wählen. Sie können wie folgt vergeben:

ViewState.Add("id_seansu","some value"); 

Und Wert wie folgt erhalten:

if (ViewState["id_seansu"] != null) 
{ 
    var id_seansu = ViewState["id_seansu"]; 
} 
+0

Wenn ich es benutze, habe ich eine Fehler-Ausnahme in etwa: Eine Ausnahme vom Typ 'System. NullReferenceException 'trat in rezerwacja_kino.dll auf, wurde aber nicht im Benutzercode behandelt –

+0

Das bedeutet, dass Sie auf den Wert zugreifen können, bevor Sie ihm etwas zuweisen. Werfen Sie einen Blick auf die Updates –

+0

Das gleiche mit viewstate wie eine Sitzung in einer anderen Funktion als godziny_Click viewstate [ "id_seansu"]; ist immer Null, warum? :( –

Verwandte Themen