ScriptManager ve AsyncPostBackError

by Yasin Sirkecili 22. Kasım 2008 20:47

ASP.NET sayfalarında çalışma zamanında bazen kodlama hataları bazende sunucu işlemlerinden dolayı sıklıkla hata ile karşılaşırız. Bu gibi durumlarda kullanıcıya hata mesajını göstermek yada kullanıcının anlaması mümkün olmayan bir asp.net sayfasına yönlendirmek genel bir problemdir. Bu sorunu aşmak için AJAX yapısındaki ScriptManager kontrolünü kullanabiliriz.

UpdatePanel ve ScriptManagerın AsyncPostBackError eventinden faydalanarak sayfada oluşan hatalarda kullanıcıya hata mesajı göstermemiz mümkün.

Örneğin;

<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError" EnablePageMethods="True" />
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="Tıkla" />
</ContentTemplate>
</asp:UpdatePanel>
<br />
</div>

burada dikkat ederseniz ScriptManagerın OnAsyncPostBackError client side eventinı ScriptManager1_AsyncPostBackError eventına yönlendiriyoruz. Bundan sonra tek yapmamız gereken bir  hata yaratıp ScriptManager1_AsyncPostBackError eventını kullanarak hatayı kullanıcıdan gizleyerek Kullanıcıya basit bir hata mesajı göstermek.

Öncelikle Button1_Click eventı ile bir hata oluşturuyoruz.

protected void Button1_Click1(object sender, EventArgs e)
{
string[] dizi = new string[2];
dizi[0] = "birinci eleman";
dizi[1] = "ikinci eleman";
dizi[2] = "üçüncü eleman";
}

gördüğünüz gibi 2 elemanlı bir dizide eleman sayısı sınırının üstüne çıktık. Bu durumda IndexOutOfRangeException çalışarak hata verecektir. Biz bu hatayı ScriptManager1 in yakalamasını sağlayarak kendimize göre yönlendirmek için.

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
{
ScriptManager1.AsyncPostBackErrorMessage = "bir hata olustu";
}

kod bloğunu kullanabiliriz. Böylelikle kullanıcı sayfada herhangi bir hata oluştuğunda standart hata mesajımızla karşılaşacaktır. Veya kullanıcıyı Response.Redirect("hata.aspx"); ile genel bir hata sayfasına yönlendirebiliriz.

Aynı yapıyı Masterpage içerisinde kullanarak daha genel bir hale getirebileceğimiz gibi. ScriptManager1 kontrolünün AsyncPostBackErrorMessage propertysine herhangi bir mesaj yazdığınızda AsyncPostBackError eventini yazmanıza gerek kalmayacaktır.

ScriptManager1_AsyncPostBackError mesajı içerisinde hata mesajının detaylarını e.Exception.Message diyerek string türünde elde edebilirsiniz.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

AJAX

Yorum ekle


(Gravatar simgesini gösterecek)  

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

Yasin Sirkecili


Yasin Sirkecili
Software Developer
MSN: yasin@sirkecili.com

Month List

Calendar

<<  Aralık 2008  >>
PaSaÇaPeCuCuPa
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar

Son Yorumlar

RecentPosts

Desteklediklerim