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.

1 kişi tarafından 5.0 olarak değerlendirildi

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

Tags:

AJAX

Dinamik eklenen kontroller ve Updatepanel trigger ilişkisi

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

for (int j = 1; j <= Convert.ToInt32(toplamsayfa.Value); j++)
{
LinkButton lnkbutton = new LinkButton();
lnkbutton.Text =" " + j.ToString() + " ";
lnkbutton.Font.Overline = false;
lnkbutton.CommandArgument = j.ToString();
lnkbutton.Command += new CommandEventHandler(lnkbutton_Command);
lnkbutton.ID = "lnk" + j.ToString();
AsyncPostBackTrigger trig = new AsyncPostBackTrigger
();
trig.ControlID = lnkbutton.ClientID.ToString();
UpdatePanel2.Triggers.Add(trig);
Panel1.Controls.Add(lnkbutton);
}

yukarıda gördüğünüz son projemden, basit bir sayfalama algoritmasına ilişkin kısa bir blok. Burda dikkatinizi çekmek istediğim.

AsyncPostBackTrigger trig = new AsyncPostBackTrigger
();
trig.ControlID = lnkbutton.ClientID.ToString();
UpdatePanel2.Triggers.Add(trig);

şeklinde updatepanelinize dinamik olarak trigger ekleyebilirsiniz.

5 kişi tarafından 4.6 olarak değerlendirildi

  • Currently 4,6/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

AJAX | ASP.NET

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

Yasin Sirkecili


Yasin Sirkecili
Software Developer
MSN & Mail: yasin@sirkecili.com

Bağlantılar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

Son Yorumlar

Bağlantılar 2