2017-01-19 14 views
0

我有問題,一個變量。變量在其它功能一直零值

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在外部函數中聲明,僅在部分類中。我必須得到該變量在另一功能:

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();*/ 
    } 

但是,當我想通過寫在的Response.Write是rezerwujButton_Click變量(「id_seansu」)一直爲「0」。 但是,當我想它在godziny_Click寫有正確的值。 爲什麼變量是在另一個函數獲得0值?

+1

因爲這兩種方法都不盡相同請求/響應循環中調用。你需要該值存儲在「會話」,或一些其他持久狀態管理 –

+0

好我得到了它,但它仍然沒有工作。在功能godziny_Click我有正確的價值,但當我嘗試編寫會話[「id_seansu」]在rezerwujButton_Click它總是空... –

回答

1

當您執行第一次點擊,頁面會回發,因此變量的值得到復位,以堅持回發變量,你必須爲使用會話或ViewState的,如果你想在其他頁面這個變量,然後你可以繼續進行會話,如果它是專門爲這個頁面,那麼你必須選擇ViewState。您可以將這樣的:

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

而且這樣獲得的值:

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

當我使用它時,我得到了類似的錯誤異常: 類型'系統的異常。 NullReferenceException異常」發生在rezerwacja_kino.dll但在用戶代碼 –

+0

這意味着你可以訪問前值分配的東西給它,看看到更新 –

+0

與像會話視圖狀態一樣的,比godziny_Click的ViewState [另一功能沒有處理「id_seansu」];總是爲空,爲什麼?:( –