其他函数中的变量始终为零

时间:2017-01-19 01:42:44

标签: c# asp.net webforms

我对一个变量有疑问。

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

但是当我想在rezerwujButton_Click中通过Response.Write(" id_seansu")编写该变量时,它总是" 0"。 但是当我想在godziny_Click中写它时它具有正确的价值。 为什么变量在另一个函数中得到0值?

1 个答案:

答案 0 :(得分:1)

当您执行第一次单击时,页面将回发,因此变量的值将被重置,对于Postback上的Persist Variable,您必须使用session或ViewState,如果您想在其他页面中使用此变量,那么您可以继续会话,如果它是专门为此页面,那么你必须选择ViewState。您可以像这样分配:

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

获得这样的价值:

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