Operacja na dacie - wyjaśnienie działania kodu

0

Cześć wszystkim!
Klepie sobie proste kody i napotkałem ciekawy nurtujący mnie problem, udało mi się znaleźć jego rozwiązanie ale potrzebuję wyjaśnienia dlaczego tak a nie inaczej się dzieję, ok przejdźmy do kodu:

public partial class About : Page
    {
        DateTime aktualnaData;
 


        public DateTime Data
        {
            get { return aktualnaData ; }
            set { aktualnaData = value; }
        }

        public About()
        {
            aktualnaData = DateTime.Now.Date;
          
        }
 
        protected void Page_Load(object sender, EventArgs e)
        {

        }


        protected void Button1_Click(object sender, EventArgs e)
        {

                aktualnaData = Data.AddDays(7);
                Label2.Text += aktualnaData .ToString("dd/MM/yyyy ");
          

        }
    }
}

Dlaczego przedstawiony kod w zdarzeniu Click NIE NADPISUJE obiektu aktualnaData? Natomiast kiedy dodam static w deklaracji obiektu DateTime aktualnaData takowe przypisanie zadziała??? Proszę o wyjaśnienie, z góry dzięki!

0

Przejrzyj kurs ASP. Z każdym postBackiem strona generowana jest na nowo.

0

czyli event Clik generuje postBack?

0

Oczywiście.

0

No okej czyli drogą dedukcji dochodzę do wniosku, że moje obiekty zostają ponownie utworzone, natomiast kiedy dodam przedrostek static nie zostają resetowane.

 public partial class About : Page
    {
        Daty daty = new Daty();
        DateTime aktualnaData = new DateTime();
        static DateTime pierwszyDzienTyg = new DateTime();
        static DateTime ostatniDzienTyg = new DateTime();


        public About()
        {
            aktualnaData = DateTime.Now.Date;

        }
 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                About.pierwszyDzienTyg = daty.pierwszyDzienTygodnia(aktualnaData);
                About.ostatniDzienTyg = daty.ostatniDzienTygodnia(aktualnaData);
            }
        }


        protected void Button1_Click(object sender, EventArgs e)
        {

                About.pierwszyDzienTyg = pierwszyDzienTyg.AddDays(7);
                Label1.Text = pierwszyDzienTyg.ToString("dd/MM/yyyy ");
                About.ostatniDzienTyg = ostatniDzienTyg.AddDays(7);
                Label2.Text = ostatniDzienTyg.ToString("dd/MM/yyyy ");
        }
    }

skleciłem kod i działa ale:
-po wciśnięciu buttona wartości są przypisane i wyświetlone (excellent)
-po wciśnięciu buttona(button się wykonuje) odświeżenie strony(wykonuje się kolejny raz button) - czy tak powinno być?

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