Asp.NET Master Page ve Hata Yakalama…

Asp.NET Master Page ve Hata Yakalama… Tekrar selam sevgili okurlar, Asp.NET Kontrollerini bitirdik ve dizi geldi Master Page ve Hata Ayıklama konularına. Asp.Net de sayfamıza eklediğimiz her kontrolün bir id si bulunuyor. Javascript ile kontrollerimize erişmek istediğimizde bu id leri doğrudan kullanabiliyoruz. Eğer masterpage kullanırsak işler biraz değişiyor. Sayfamız masterpage den türediği süre kontrollerin idlerine bir ön ek geliyor.     Bunu kod tarafında göremesekte sayfa yorumlandıktan sonra kaynak kodlarına baktığımızda id lerin değiştiğini görüyoruz. Makalemize geçerek ayrıntılı ayrıntıları sizler ile paylaşayım.   Master Page • Web sitelerinde ekseriyetle üst kısım(header),Alt kısım(Footer) ve belirli birkaç uygulama her sayfada ayrı ayrı eklenmez. • Düşünün 150 sayfalı bir web kullanmanız mevcut ve sayfada ufak bir değişiklik yapmak istediğinizde bütün sayfalarda yapmak durumunda kalırdınız. Bu aşırı zahmetli olurdu. • ASP’de Include yöntemi ile bir sayfa yapıp o sayfayı öbür bütün sayfalara gömerek bu zahmetten kurtulabiliyorduk. ASP.Net ise Master Page ile bizlere bu niteliği daha modern şekilde sunuyor.   Master Page Nedir? Nasıl Kullanılır? • ASP uygulamalarında Include ettiğimiz sayfaları çalıştırmadan düzenleyemiyorduk. Fakat Master Page ile bundan sonra bu sıkıntı ortadan kalktı ve bu özellik epey bir kullanım kolaylıklı bir araç oldu. • Bir web uygulaması oluşturalım ve detaylı şekilde inceleyelim;   Uygulamamıza bir adet Master Page ekliyoruz.   1 <div> 2 <asp:ContentPlaceHolder id=ContentPlaceHolder1” runat=”server”> üç </asp:ContentPlaceHolder> 4 </div>   Master Page sayfamızın Source bölümüne baktığımızda <div> bünyesinde bir ContentPlaceHolder olduğunu görmekteyiz. Bu bölümü şimdilik silelim.   Master Page sayfamızın içerisine tablomuzu ekledik ve tasarımımızı yaptık. Header, Footer, Sol menü bölümü birde her sayfada değişecek olan orta kısım (beyaz kısım).     ContentPlaceHolder ne işe yarıyor burada buna değineceğiz. Master Page’yi uygulayacak olan sayfaların sorunsuz erişebileceği ve metin oluşturabileceği alandır. Sayfa arasında birden bire fazla ContentPlaceHolder kullanılabilir. Beyaz kısma Toolbox’dan bir adet ContentPlaceHolder ekleyelim.   ContentPlaceHolder ne işe yarıyor burada buna değineceğiz. Master Page’yi uygulayacak olan sayfaların sorunsuz erişebileceği ve metin oluşturabileceği alandır. Sayfa arasında birden bire fazla ContentPlaceHolder kullanılabilir. Beyaz kısma Toolbox’dan bir adet ContentPlaceHolder ekleyelim.   Master Page sayfamıza eklediğimiz ContentPlaceHolder her sayfanın kendi içeriğini oluşturmasını sağlayacaktır. Peki, Master Page Web formlarında nasıl kullanılır. Uygulamamıza Add New Item tarafını açarak Master Page’li bir web formu oluşturacağız;   Üstteki grafikte gördüğünüz bu gibi Web Formunu seçtiğimizde Bize Master Page olacak mı? Diye sormaktadır. Select Master Page seçeneğine check yapalım ve devam edelim. Master Page’li Web formunu eklediğimizde bizden bir Master Page sayfası belirtmemizi istiyor. Tasarımını yapmış olduğumuz masterpage.master sayfasını seçiyoruz ve devam ediyoruz. Master Page’li bir sayfa oluşturduğumuzda gördüğünüz benzeri yalnızca ContentPlaceHolder tarafına dokunabilmekteyiz. Diğer kısımlar Master Page anlamında kilitlenmiştir. Şimdi ContentPlaceHolder bölümü nasıl kullanılır tarafına istikbal olursak eğer, ContentPlaceHolder tarafını bir aspx sayfası bunun gibi kullanabiliriz. Hata Yakalama Try, Catch, Finally • Bir uygulama, başlangıç ve bitiş bünyesinde yazılan kodlardan ibarettir.   • Peki, bu başlangıç ve bitiş arasında neler oluyor?   • FormatException, OverFlowException hataları ile karşılaşmamak olasıdır değil denecek kadar azdır(Dalgınlığınıza gelebilir)   • Bu hataları yakalamak için en aşırı uygulanan metod olan Exception Sınıfından türetilen Try – Catch – Finally bloklarıdır.     • Basit bir örnekle açıklamak gerekirse; bir projeye başladınız yahut basit bir form oluşturdunuz, bu formdan ayrıntıları almak istiyorsunuz, a değişkenine atadığınız bir textbox ve b değişkenine atadığınız textbox mevcut diyelim ve bu textbox’lardan verileri alıp toplamak istiyorsunuz.   • Peki, kullanıcı Şayet Integer tipinde bir kıymet değil de String tipinde(a, b, c…) bir kıymet girerse ne olacak? Bu tip sorunları Validation Kontrolleri ile yahut Client-Side Coding(Sunucu Taraflı Kodlama) ile önleyebilirsiniz.   • Bir öbür yol ise Sunucuda oluşabilecek bir hatayı(Dosya yolunuzun, adınızın değişmesi gibi) kullanıcıya bildirip ne yapması gerektiğini iletebilirsiniz. Basit bir uygulama ile Try – Catch – Finally Bloklarımızı inceleyelim;   Örnek-1 İki adet textbox, bir adet Buton ve bir adet Label oluşturalım. Textbox’tan gelen Integer verileri toplayıp Label’a yazdıralım?   1 protected void Button1_Click(object sender, EventArgs e) 2 { üç try 4 { 5 int sayi1 = Convert.ToInt32(TextBox1.Text); altı int sayi2 = Convert.ToInt32(TextBox2.Text); 7 int sonuc = sayi1 + sayi2; 8 Label1.Text = sayi1 + “+” + sayi2 + “=” + sonuc.ToString(); 9 } on catch (Exception) 11 { 12 Label1.Text = “Yanlış Değer Girdiniz”; 13 } 14 finally 15 { 16 TextBox1.Text = “”; 17 TextBox2.Text = “”; 18 } 19 }   •  Try içerisinde kodlarımız çalıştırılıyor, Şayet bir hata ile karşılaşılır ise çalışma durduruluyor ve Catch tarafına geçiyor belirtilen bir Exception mevcut ise hata mesajı otomatik şekilde yazdırılabiliyor ya da Exception belirtmeden manüel şekilde da hata mesajı yazılabilir. Finally bölümü ise hata çalışsa da çalışmasa da her iki halde da çalışır. Biz burada Textbox’ların içini temizledik. Peki, Catch ile öbür hangi Exception’ları kullanabiliriz.   •  Exception: Varsayılan tiptir, genelde tek başına kullanılır. Hata mecburiyetinde hatayı belirtilen değişkene aktarır.   •  FormatException: Formata uygun verinin girilmediği süre harekete geçer.   •  OverFlowException: Burada ise veri taşma yapıyorsa(belirlenen veri tipinin sınırları dışında ise)   •  DivideByZeroException: Sıfıra bölünme mecburiyetinde harekete geçmektedir. Build edip hata olmadan çalıştıralım. Her iki halde deneyelim(ilk şekilde sayısal değerler girelim, ikinci kez çalıştırdığımızda ise metinsel değerler girelim)


Yapılan Yorumlar
Erdem OFLAZ

Bir mum, diğer mumu tutuşturmakla ışığından bir şey kaybetmez.
 Kategoriler
 Popüler yazılar