01.04.03. Razor Pages: Create

Bir kayıt ekleme sayfası deyince aklımıza text’leri oluşturma, bir form üzerinden gönderme ve sunucu tarafında işleme aklımıza gelir. Hatta sunucu tarafında bir veritabanındaki tabloya veri yaratmak için hemen INSERT ifadesini düşünebiliriz. Şimdi bir Razor kodu ve EF Core ile bu işlemin nasıl yapılacağına bir bakalım. Öncelikle Create.cshtml.cs dosyasına bir bakalım.

Create.cshtml.cs

Klasik context işlemini yapıp Veritabanı ile bağlantıyı kurduk. OnGet sayfa oluşurken bir Movie nesnesi oluşturuyor.  IActionResult türünden Create.cshtml dosyasını döndürüyor. Bu işlemin amacı sayfa ilk yüklenirken örnek bir değer seti oluşturmak, bu değeri değiştirebilirsiniz. 

Burada tek Movie değişkeni vardır. Bu değişkenin üzerindeki [BindProperty]

Bu bölümde önemli olan fonksiyon OnPostAsync metodudur. Bu metod sayfada bir POST işlemi olduğunda devreye girer. Model bölümüne uygun bir yapılmaysa sayfa aynen döndürülür. Eğer Model bölümüne uygun bir giriş ise Movie.Add komutu ile bir Movie nesnesi eklenir ve SaveChangesAsync() kaydetme işlemi çağrılır. Burada sistem otomatik olarak bir Insert işlemini devreye alır ve kaydetme işleminden sonra Index sayfasına yönlendirme yapılır. Şimdi bu koda bağlı .cshtml dosyasına bakalım. 

Create.cshtml

class=”text-danger” validation işleminden dönen sonuçları yazdırmak için kullanılır. Burada @section Scripts bölümüne eklenen kod validation işleminin gerçekleşmesini sağlar. Bu istemci tarafında bir kontroldür, ancak aynı kontrol sunucu tarafında da yapılır. Tek kod yazarak hem istemci hem de sunucu tarafında kontrole destek verir. Bu konuyu ayrıca anlatacağız.

<form method=”post”> metodu submit işlemindeki gönderim türünü belirler. Submit işlemi yapıldığında eğer tüm değerler validation’dan geçerse sunucudaki aynı sayfaya POST edilir. Bundan sonraki işlemleri  OnPostAsync() metodu yapar.

Burada bir input etiketinin nasıl çevrime uğradığına da bakalım. Razor tarafında:

İstemci tarafında, tarayıcı da:

name ve id özellikleri asp-for’dan gelir. type ve value özellikleri ise otomatik olarak yazılır.