01.04.04. Razor Pages: Edit

Edit işlemi için öncelikle güncellenecek kaydım benzersiz değerine (PK, birincil anahtar) ihtiyaç vardır. Öncelikle verinin verinin araması yapılır ve uygun kayıt döndürülür. Buradan dönen değerler form etiketi içinde istemci tarafına aktarılır. Daha sonra form üzerinde değişiklikler yapılır ve sunucuya POST edilir. Sunucu tarafında veritabanında bir update işlemi yapılır. Senaryoyu belirledikten sonra gelelim kod bölümünü yorumlamaya:

Öncelikle Edit.cshtml.cs dosyasına bakalım.

Edit.cshtml.cs

OnGetAsync(int? id) işlemi URL üzerinde gelen “id” değerini alır ve FirstOrDefaultAsync(m => m.ID == id) arama yapar. Eğer arama sonucu olumlu ise bir Movie nesnesi döndürülür. Daha sonra Page() metodu çağrılarak veritabanından alınan değerler HTML sayfa üzerine eklenir ve istemciye gönderilir.

OnPostAsync() işlemi yapıldığında [BindProperty] sayesinde istemci tarafından gönderilen değerler Movie nesnesine aktarılır. Eğer form valid ise işlemin bir güncelleme olduğu _context.Attach(Movie).State = EntityState.Modified;  ile context’e bildirilir. Daha sonra await _context.SaveChangesAsync() metodu ile UPDATE işlemi yapılmış olur. Burada bu işlemde sorun çıkması dikkate alınıp try-catch ifadesi kullanılmıştır. Burada MovieExists() fonksiyonu ile kaydın var olup olmadığı kontrol edilir.

Burada Edit.cshtml kodu Create.cshtml kodunun çok benzeridir.