Codebehind Javascript
- Temmuz 11th, 2011
- Write comment
Uzun zamandır yazmıyordum. Kısa bir teknik yazıyla geri döneyim dedim. Belki devamı gelir bu tür kısa yazıların. Temelden bir konuyu anlatmaktansa bu şekilde küçük problemlere çözüm olabilecek yazılar yazmayı planlıyorum.
Başlıktan da anlaşılabileceği amaç bir ASP.NET uygulamasında codebehind’da javascript çalıştırmak. Böyle bir şeye niye ihtiyaç var diye sorulabilir. Bilindiği gibi ASP.NET’de halihazırda bir messagebox yok. Bunu javascript’le, uygulamamızda ihtiyacımız olduğu yerde kullanıp, daha kolay yönetmek adına codebehind’da yazıp çalıştırabiliriz. Diğer taraftan, kod içinde geçen bir değişkeni veya resx dosyalarından bir değeri yazdırmak istediğimizde, javascript’i codebehind’da yazmak faydalı olacaktır.
Örneğimizde bir dropdownlist’den bir meslek seçmek isteyelim. DropDownList’in seçtiğimiz eleman “Seçiniz” ise; javascript ile ekrana bir uyarı verelim. Ekrana vereceğimiz uyarıyı da bir resx dosyasında tutalım.
Projemiz çok basit. Bir tane JobsDropDownList id’li bir dropdownlist’imiz ve SaveButton id’li bir butonumuz var. DropDownList’in içinde de 4 tane item var. “Seçiniz, Öğrenci, Çalışan ve Emekli”.
Codebehind’a scriptimizi oluşturacak olan metodumuzu yazıyoruz.
private void SetDropDownListScript()
{
StringBuilder script = new StringBuilder();
script.Append(“<script type=’text/javascript’>”);
script.Append(“function validate()”);
script.Append(“{“);
script.Append(“if (document.getElementById(‘” + JobsDropDownList.ClientID + “‘).value == ‘” + dropDownListDefaultValue + “‘)”);
script.Append(“{“);
script.Append(“alert(‘” + warning + “‘);”);
script.Append(“}”);
script.Append(“}”);
script.Append(“</script>”);
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “DropDownListScript”, script.ToString(), false);
}
Burada StringBuilder class’ını çağırabilmemiz için System.Text namespace’ini yazmamız gerekiyor ve tabi ki reference’ı ekli olması gerekiyor (ki default olarak ekli).
Aslen bu kod bloğunda yaptığımız yeni bir şey yok. Bildiğimiz javascript kodunu yazıyoruz. İşin tek esprisi var. If bloğunda karşılaştırma yaptığımız değer “dropDownListDefaultValue” değişkeni kodumuzun içinde string olarak tanımlanan ve sayfanın Load’unda değerini resx dosyasından alan bir değişken. Ha keza ekrana bir messagebox olarak yazdırdığımız “warning” de aynı şekilde. Son satırda ise bu yazdığımız script’i “DropDownListScript” key’iyle register ediyoruz.
public static string warning = “”;
public static string dropDownListDefaultValue = “”;
protected void Page_Load(object sender, EventArgs e)
{
warning = GetLocalResourceObject(“Warning”).ToString();
dropDownListDefaultValue = GetLocalResourceObject(“DropDownListDefaultValue”).ToString();
SetDropDownListScript();
SaveButton.OnClientClick = “validate()”;
}
Sayfamızın property’le
rine baktığımızda yukarıda bahsettiğimiz warning ve dropDownListDefaultValue değişkenlerini görüyoruz. Bunlar değerlerini resx dosyasından alıyorlar. Script kodumuzu oluşturmak için yazdığımız metodu da yine burada çağırıyoruz ve son satırda butonumuzun OnClientClick metoduna yazdığımız script fonksiyonunu set ediyoruz(dikkat: register ettiğimiz key’i değil, hangi fonksiyonu çalıştırmak istiyorsak onu).
Bu şekilde artık DropDownList’imizde “Seçiniz” seçili iken butonumuza basarsak resx dosyasından aldığımız uyarı mesajı ekrana basılacaktır. Böylece uyarı mesajını değiştirmek istediğimizde koda dönmeden, resx dosyasına istediğimiz uyarı mesajını yazabiliriz. Tabi ki yukarıda yazdığımız kod ve görüntülenen mesaj client tabanlıdır. Haliyle server işleyişini durdurmayacaktır. Buradaki amaç codebehind’a javascript kodunu yazıp, çalıştırmaya bir örnek vermektir.
Projeyi buradan indirebilirsiniz: http://www.2shared.com/file/sV1SggxH/CodeBehindJavaScript.html








