Merhaba Webkolog takipçileri, bugün sizlere web geliştirme dünyasında sıklıkla karşılaştığımız, ancak özellikle .NET ekosistemine yeni adım atanların zihnini karıştırabilen çok temel bir konudan bahsetmek istiyorum: ASP.NET HTML kontrolleri ile standart HTML elemanları arasındaki farklar.

Web projelerimizi geliştirirken arayüzde dinamik etkileşimler sağlamak adına sunucu taraflı bileşenlere ihtiyaç duyarız. Bildiğiniz gibi geleneksel HTML etiketleri tarayıcı tarafından doğrudan işlenen statik yapılardır. Ancak işin içerisine ASP.NET girdiğinde, sunucu tarafında (backend) işleyebileceğimiz özel yapılar karşımıza çıkar.

1. Standart HTML Elemanları

HTML (HyperText Markup Language), web sayfalarının temel iskeletini oluşturur. Örneğin bir buton veya metin kutusu tanımladığınızda, tarayıcı bunu olduğu gibi sunar ve doğrudan sunucu kodlarıyla (C# veya VB.NET) etkileşime girmez.

<input type="text" name="txtKullanici" id="txtKullanici" />
<input type="submit" value="Gönder" />

Bu kullanımda form verileri POST edildiğinde sunucuya iletilir fakat sunucu tarafında txtKullanici.Text gibi bir nesne oryanteli erişim imkanınız bulunmaz.

2. ASP.NET HTML Sunucu Kontrolleri (runat="server")

Eğer standart bir HTML etiketine runat="server" özniteliğini eklerseniz, bu eleman artık bir sunucu kontrolüne dönüşür. Böylece sunucu tarafındaki C# kodlarınızdan bu elemana ID değeri üzerinden erişebilir, özniteliklerini dinamik olarak değiştirebilirsiniz.

<input type="text" id="txtKullanici" runat="server" />
<input type="button" id="btnGonder" runat="server" onserverclick="btnGonder_Click" />

Burada dikkat edilmesi gereken husus, onserverclick olayı sayesinde buton tıklamasının doğrudan sunucudaki bir metodu tetiklemesidir.

3. ASP.NET Web Form Kontrolleri (<asp:...>)

ASP.NET mimarisinin bizlere sunduğu bir diğer yöntem ise doğrudan sunucu bileşeni olarak tasarlanmış asp: ön takılı kontrollerdir. Bu kontroller arka planda zengin olay (event) yapısı ve durumu koruma (ViewState) yeteneği ile gelir.

<asp:TextBox ID="txtKullanici" runat="server"></asp:TextBox>
<asp:Button ID="btnGonder" runat="server" Text="Gönder" OnClick="btnGonder_Click" />

Sayfa derlendiğinde ASP.NET bu kodları otomatik olarak tarayıcının anlayabileceği standart HTML <input> etiketlerine dönüştürür ve çıktıyı tarayıcıya iletir.

Hangi Durumda Hangisi Tercih Edilmeli?

Eğer üzerinde hiçbir sunucu mantığı çalışmayacak, tamamen statik kalacak bir eleman tasarlıyorsanız yalın HTML kullanmak performans ve sayfa boyutu açısından en mantıklı yoldur. Ancak kullanıcıdan veri alacak, veri tabanına kayıt yapacak veya durum bilgisi saklayacak bileşenler inşa ediyorsanız runat="server" tanımlı HTML kontrollerini ya da varsayılan ASP.NET Web Form bileşenlerini tercih etmelisiniz.

2013 yılı itibarıyla ASP.NET Web Forms mimarisi projelerimizde hızlı geliştirme imkanı sağlasa da, oluşturduğu HTML çıktısının kontrolü ve ViewState bağımlılığı konusunda dikkatli olmamız gerektiğini unutmamak şart.

Bu yazımda sunucu ve istemci tarafındaki etiket yapılarının mantığını sade bir dille özetlemeye çalıştım. Umarım projelerinizde doğru kontrolü seçerken sizler için faydalı ve aydınlatıcı bir kaynak olur.

Hepinize sağlıklı, mutlu ve huzurlu günler dilerim!

Webkolog'u takipte kalın!