ASP.Net ile HTML Nesnelerine Ulaşmak

  • 15.09.2015
  • rumeysa
  • ASP.Net

Merhaba, bu yazımda asp.net ile html nesnelerine ulaşmanın yöntemini ve faydalarını açıklayacağım. Öncelikle böyle birşeye neden ihtiyaç duyuyoruz ? asp.net'in kontrolleri bize yetmiyor mu ? bunu açıklığa kavuşturalım. Ben asp.net'e yeni başladığımda bana çok mükemmel gibi gelmiştir. "gibi" diyorum çünkü web dünyasını tanıdıkça asp.net'in de aslında hantal hiç de pratik olmayan bir web programlama framwork'u olduğunu farkdiyor insan. Neden PHP denemiyorsun diyenler de oluyor buna karşılık her ne kadar hantal olursa olsun barındırdığı çokça kütüphaneler, ticari uygulamalardaki yetenekleri gözönüne alındığında ve en önemlisi MVC gibi bir teknoloji ile birleştiğinde asp.net kaçınılmaz hale geliyor.

Bu makalenin başlığı aslında "MVC kullanmıyorsanız html'e nasıl daha iyi müdahele edersiniz ?" olmalıydı çünkü burada anlatılacak konu çoktan çözülmüş, daha iyisi yapılmış bir teknojinin hala kullananları için açıklama niteliğinde. MVC web server ile client yani istemci arasındaki iletişimin mantığa en yakın hali diyebiliriz olabildiğince saf ve gereksiz ayrıntılardan arındırılmış. Velhasıl MVC'yi kendi makalesinde daha detaylı övebiliriz. Butonları, Textboxları, Radiobutonları, Checkboxları vs. Asp.net kontrolü olarak kullandığınızda .net geliştiricilerin baş belası Viewstate coştukça coşar her kontrol sunucu ile istemci arasında daha fazla veri transerine sebep olur aslında bizim yöntemimizde de veriler taşınır ama asp.net kontrolleri kadar değil yoğun değil ayrıca asp.net kontrolleri de işlemler yapıldıktan sonra zaten html kontrollerine çevirilip öyle cevap verilir. biz ise zaten html çalışıyor olacağız. Bir diğer sebep de tasarım olayıdır ki Asp.net kontrollerinde elemente stil vermek için CssClass tanımlaması yapmalısınız diğer bir deyişle inline css yazamazsınız. html kontrollerinde ise adı üstünde "html" olduğu için her zamanki müdahalelerinizi yapabilirsiniz. şimdi yeterince yukarıdaki sorunun cevabını açıkladıysak ilk örneklerimize başlayalım.

Bu standart Asp kontrolüdür :

<asp:Button ID="btn_aspbutonu" runat="server" CssClass="stilclass" Text="Button" />

Bu ise Html kontrolün asp.net olarak işlenebilir hale dönüşmesi :

<input id="btnhtml" type="button" runat="server" value="HTML buton" style="color:#000" />

Görüldüğü gibi standart tanımlamadan farkı sadece runat="server" yani türkçesi sunucuda koştur demektir :) peki bu butonun tıklama işlemini code behind tarafında nasıl yakalayacağız. öncelikle sunucu taraflı tıklamayı işlemek istiyorsanız onserverclick istemci yani tarayıcı taraflı tıklamayı yakalamak istiyorsanız onclick özelliğini belirtmelisiniz.

<input id="btnhtml" type="button" runat="server" onserverclick="btn_tikla_Click" value="HTML buton" />

Code behind tarafında otomatik fonksiyon oluşturmak için iki yöntem var. onserverclick yazıp = işaretini yazdığınızda bir popup açılacak ve "<Create New Event>" şeklinde bir buton ile yeni bir fonksiyon oluşturmanıza yardımcı olacaktır. diğer yöntem ise code behind tarafında kontrol listesinde buton ismini seçip sağ taraftaki ServerClick işlemine tıklamaktır. bu işlemlerin ardından aşaığıdaki gibi fonksiyonunuz hazır hale gelecek ve asp.net butonundan farksız olarak çalışmaya devam edebileceksiniz.

private void btnhtml_ServerClick(object sender, EventArgs e)
{
  //İşlemlerinizi burada yapabilirsiniz
}

Aynı şekilde Html textbox içinde onserverchange fonksiyonu ile change olayını sunucu tarafında işleyebilirsiniz

<input id="htmltext" type="text" runat="server" onserverchange="htmltext_ServerChange"/>

Bir ayrıntıya dikkat etmek gerekir ki, textbox, radio, check gibi kontrollerde sayfa yenilendiğinde bilgilerin kaybolmasını istemeyebilirsiniz. default durumda runat server yapılan kontroller verileri tutmayacağı için kaybolacaktır bunun önüne geçmek için baş belası viewstate'i bu kontrol için etkinleştirmelisiniz

<input id="htmltext" type="text" enableviewstate="true"/>

Bu işlemin ardından sayfa postback olsa dahi verileriniz korunacaktır. runat server ifadesini yazdığınız her html elemanına div, ul, p vs. ulaşabilirsiniz elementin türüne göre kısıtlı özelliklerine erişebilirsiniz. yeni attribute ekleyebilir, çıkarabilir, visible değerini değiştirebilirsiniz. örneğin asp.net panel kontrolünü kullanmak yerine runat server bir div kullanarak da bu işi çözebilirsiniz. ilk başta zor gelebilir ama alıştıkça daha kolay geliyor.

Arkadaşlar bildiğim kadarıyla anlatmaya çalıştım bilmediğimi de yorumlarınıza yazabilirsiniz tabii ki istek öneri ve görüşlerinizi de. umarım herkese faydalı olmuştur. Diğer makalelerde görüşmek üzere.

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı 

 

Yorum Yap

Diğer Makaleler

Etiketler