:: Anthem kütüphanesini tanıyalım 1 - asp.net ajax yazıları
5 Aralık 2007 Eklemesi : Anthem in ve genel olarak ajax ın ne işe yaradığı ile ilgili bir giriş yapmadığım için sonradan ekliyorum.
Anthem kütüphanesinin amacı nedir? Neden onu kullanma gereği duyabiliriz?
Anthem, asp.net içinde kullanılabilen ajax destekli bir bileşen kütüphanesidir. Zaten yazılmış olan bir asp.net kodunu çok az değişiklikle ajax destekli hale getirmenizi sağlar. Aslında arka planda (kullandığı xmlhttprequest nesnesi ile) tam bir sayfa isteğinde bulunur, ancak sadece belirttiğiniz kontrollerde meydana gelen değişiklikleri sayfanıza yansıtır.
Şimdi isterseniz, anthem ile daha önce hiç tanışmamış asp.net e yeni merak salmış veya asp.net bilip de anthem i daha önce kullanmamış kişilerden birinin yerine kendimizi koyalım ve adım adım ona rehberlik edelim. Ne yapması gerekir bu şahsın ki sayfalar yenilenmeden işlemlerini tamamlayabilsin.
1-) Anthem i bulalım:
http://www.anthemdotnet.com
Adresinden takip ederek şu indirme bağlantısını buluyoruz :
http://sourceforge.net/project/showfiles.php?group_id=151897
2-) Anthem i kuralım:
Anthem size bir proje dosyası (sln) ve c sharp projesi olarak gelecektir (csproj). Eğer Visual Studio kullanıyorsanız zaten derlemekte bir problem yaşamayacaksınız. Ama eğer Visual Studio nuz yoksa bu kodları derlemek için çeşitli seçenekleriniz mevcuttur. Visual c# 2005 veya 2008 express ile derleyebilirsiniz, veya zaten sizde .net framework 2.0 sdk kurulu ise komut satırından
msbuild aracını kullanabilirsiniz. Ek bir kurulum gerektirmediği için ben msbuild ile derlemeyi tercih ettim.

Haydi derleyelim :-)

msbuild aracının kullanılışı:

"Build succeeded" yazısını gördükten sonra hemen kütüphaneyi indirdiğim klasöre gidip bakıyorum. Şu an için release modunda değil, debug modunda derledim, görsel araçları kullanan arkadaşlarım, kolayca anthem içine girip bu inşa işlemi sonunda oluşan dll in içinde hata ayıklayabilirler.

Bir asp.net projesinin (veya sanal dizinin - virtual directory-) /bin klasörüne bu .dll i eklemeniz gerekiyor. Bin klasörüne kopyaladıktan hemen sonra, bu dll kullanıma hazır olacaktır.
3-) Basit bir örnek ile mantığını kavrayalım:
Çoğu (ne yazık ki "hepsi" diyemiyorum) asp.net kontrolünün anthem eşdeğerleri vardır. Var olan bir asp.net sayfasını anthem ile ajax-destekli hale getirmek için yapacağınız değişiklikler çok azdır.
-
<%@ Register Assembly="Anthem" Namespace="Anthem" TagPrefix="anthem" %>(Burada TagPrefix istediğimiz gibi değiştirilebilir, ancak anlamayı kolaylaştırmak namına ben de aynı bırakıyorum.) Bu satırı aspx sayfanızın başına eklemelisiniz.
- asp:TextBox yerine anthem:TextBox gibi kontroller kullanacaksınız.
- Eğer o kontrolün yapılan ajax çağrısından sonra güncellenmesini istiyorsanız, AutoUpdateAfterCallBack="true" ile veya sayfa yüklenirken kod ile güncelleşmesini sağlayabilirsiniz.
İşte iki sayıyı toplayan ve sonucu yazan basit bir örnek:
<%@ Page Language="C#"%>
<%@ Register Assembly="Anthem" Namespace="Anthem" TagPrefix="anthem" %>
<script runat="server">
protected void buttonTopla_Click(object sender, EventArgs e)
{
try
{
labelSonuc.Text = (Convert.ToInt32(sayi1.Text)+Convert.ToInt32(sayi2.Text)).ToString();
}
catch
{
labelSonuc.Text = "Hey adamım senin problemin ne?";
}
finally
{
sayi1.Text = "";
sayi2.Text = "";
}
}
</script>
<html>
<head>
<title>Çok basit bir anthem örneği</title>
</head>
<body>
<form runat="server">
<anthem:TextBox ID="sayi1" runat="server" AutoUpdateAfterCallBack="true"/>
<anthem:Button ID="buttonTopla" runat="server" Text="+" OnClick="buttonTopla_Click"
TextDuringCallBack="Bekleyiniz..."/>
<anthem:TextBox ID="sayi2" runat="server" AutoUpdateAfterCallBack="true"/>
=
<anthem:Label ID="labelSonuc" runat="server" AutoUpdateAfterCallBack="true"/>
</form>
</body>
</html>
Ve işte sonuç :

"Bekleyiniz..." yazısını sonuç çok hızlı geldiği için göremeyebilirsiniz.
4-) Dikkat edilmesi gereken hususlar:
Anthem ile iş yaparken dikkatimi çeken sıkça yaptığım hatalar şunlar idi:
Eğer bir anthem:GridView inden herhangi bir textbox yakalıyorsak veya datalist içindeki kontrollere FindControl ile müdahale ediyorsak, bu kontrolleri Anthem.TextBox, Anthem.CheckBox gibi anthem eşdeğerlerine dönüştürmeliyiz. Zaten karşınıza çıkan hata mesajı yeterince yönlendirici olacaktır, ama bu hatayla uğraşmıştım bir süre. İkincisi, eğer normal bir olay çağrısının (event handler) CallBack sonucu gerçekleşip gerçekleşmediğini tespit etmek için Anthem.Manager.IsCallBack kullanabilirsiniz.
Bu yazının birinci kısmını burada bitiriyorum. İsterseniz, indirdiğimiz anthem dosyalarıyla beraber gelen Anthem-Examples-2005 klasörünü sanal dizin haline getirip örnekleri inceleyerek bu yazıdan öğrendiğinizden çok daha fazlasını öğrenmeniz mümkündür. Zaten kaynak olarak sıklıkla oraya başvurdum, ilk başladığımda.
| Rating : 10 üzerinden 7.70 |