Form İşlemleri ve Model Bağlama
Web Programlama 2 - Ünite 4: Etkileşim ve Veri Transferi
Web'in Etkileşim Gücü
Bu ünite, kullanıcıdan veri almanın, bu veriyi sunucuya taşımanın ve sunucuda anlamlı nesnelere dönüştürmenin (Mapping) mühendisliğini ele alır. Statik sayfalardan, yaşayan uygulamalara geçişin anahtarıdır.
Web Formlarının Anatomisi
Form, kullanıcı ile uygulama arasındaki ana etkileşim noktasıdır. Teknik iskelet şu şekildedir:
- <form> Tüm giriş elemanlarını kapsayan ana taşıyıcı.
- Action Verilerin nereye (hangi URL/Controller) gideceğini belirtir.
- Method Verilerin nasıl taşınacağını (GET/POST) belirler.
- Name Kritik! Sunucunun veriyi tanıması için anahtardır.
<form action="/Ogrenci/Kaydet" method="post"> <!-- Input: Veri Girişi --> Ad: <input type="text" name="ad" /> <!-- Şifre Alanı --> Şifre: <input type="password" name="sifre" /> <input type="submit" value="Gönder" /> </form>
HTTP Protokolü: GET vs POST
GET Metodu
- Veriler URL adresinde (Query String) taşınır.
- Hızlıdır, önbelleğe (cache) alınabilir.
- Güvenli değildir (Şifre taşınmaz).
- URL karakter sınırı vardır (dosya yüklenemez).
POST Metodu
- Veriler gövdede (Body) gizli taşınır.
- Güvenlidir (Şifre, Kimlik vb. için).
- Dosya yükleme ve büyük veriler için kullanılır.
- Önbelleğe alınmaz.
Uygulama: Veri Gönderimi (Eski Yöntem)
public class Ogrenci { public string OgrAd { get; set; } public string OgrSoyad { get; set; } }
Verileri HttpContext üzerinden "name" ile tek tek ayıklarız.
[HttpPost] public string Kaydet() { // Name değerlerini elle çağırıyoruz string gelenAd = HttpContext.Request.Form["ad"]; string gelenSoyad = HttpContext.Request.Form["soyad"]; return gelenAd + " " + gelenSoyad; }
Model Binding: Modern Çözüm
Sistem, HTML formundaki name değeri ile C# sınıfındaki Property adını karşılaştırır ve otomatik eşleştirir.
<input type="text" name="OgrSoyad" />
public string Kaydet(Ogrenci ogr)
{
// Otomatik Doldu!
return ogr.OgrAd;
}
Sonuç: C# geliştiricisi veriyi parse etmekle uğraşmaz. Sistem, gelen OgrAd verisini ogr nesnesinin OgrAd özelliğine otomatik bağlar.
Hiç yorum yok:
Yorum Gönder