Makale Özeti

Bu makalemizde ASP.NET 2.0 da yer alan Master Sayfalar (master pages) konusunu inceleyeceğiz.

Makale

ASP.NET uygulamaların en büyük avantajlarından birisi kontrol kavramı ile karşılaşmamız olmuştu; HTML Kontrolleri ve Web Form Kontrolleri ile internet uygulamaları yazmak hiç olmadığı kadar kolay bir hale gelmişti. Ve diğer çok kullanışlı bir kontrol olan kullanıcı kontrolleri (user controls) sayfalar içerisinde sıklıkla kullandığımız parçaları derleyip toparlayabildiğimiz ve .ascx uzantılı dosyalar olarak kaydederek istediğimiz ASP.NET sayfalarından @Register ifadesini sayfanın en başında kullanarak yeniden kullanabildiğimiz çok kullanışlı bir kontrol olmuştu.

Kullanıcı Kontrolleri ile Başlayan Değişim...

ASP.NETin içeriği koddan ayrıştırdığından bundan önceki makalelerimizde sıkça bahsettik, .ascx uzantılı kullanıcı kontrolleri ile sayfamızı yeniden kullanılabilir parçalara dahi bölmüş olduk. Nerede işimize yaradı diye kendimize soracak olursak, birçok sayfada yeniden kullandığımız başlık kısmı, altbilgi kısmı, anket kısmı ayrı ayrı .ascx dosyaları haline gelerek istediğimiz herhangi bir sayfadan çağırılabilmiş böylelikle site içerisinde bir düzen sağlanmıştır. Hemen bir sayfa örneğine bakalım:

Şekil 1

Şekil 1de belirtilen gibi bir sayfa tasarımı muhtemelen diğer tüm alt sayfalarda da kullanılacaktır ve eğer siz logo kısmını bir kullanıcı kontrolleri yaparsanız diğer sayfalarda da kullanabilirsiniz. Gelin biraz da Master Sayfaları tanıyalım:

Master Sayfalar (Master Pages) nedir?

Bir site içerisinde görünüm açısından uyumu sağlamak amacıyla ve birden fazla şablonu kolay bir şekilde kullanabilmek için Master sayfaları kullanırız. Bir site içerisinde tasarım çoğu zaman aynı olsa da bir site içerisinde birden fazla ana şablon kullanmak isteyebiliriz. Kişiye özel içerikten bahsettiğimiz şu günlerde buna gerçekten ihtiyaç var. ASP.NET içerisinde yer alan .ascx uzantılı olan kullanıcı kontrolleri bunu programatik olarak yapabilmemizi sağlasa da bir sayfaları diğer sayfalardan türeterek hayata geçirmek yani görsel bir uyum için kalıtım uygulamak mükemmel bir çözüm olacaktır. Master sayfalar işte bunu yapmak için ASP.NET 2.0 içerisinde yer alıyorlar.

Nasıl Master Sayfa yaratabilirim?

Visual Studio .NET 2005de öncelikle yeni bir ASP.NET Projesi oluşturduğunuzda referanslarla birlikte, boş bir .aspx uzantılı web form sayfası açılır. Sizin bu projeye bir master sayfa eklemek için yapmanız gereken proje dosya adı üzerinde sağ tuşa basarak veya menu adımını takip ederek "Add New Item" seçeneği seçmeniz gerekmektedir. Bu işlemi yaptıktan sonra karşınıza Şekil 2deki gibi bir görüntü çıkacaktır:

Şekil 2

Gelen ekranda bildiğiniz gibi artık yeni sayfalar iki farklı şekilde çıkmaktadır; arka planda kod olan sayfalar(codebehind) veya aynı sayfa içerisinde kodlama yapabileceğiniz (inline-coding) şekilde size sunulmaktadır. Biz bu örneğimizde "Master Page using Code Seperation" seçeneğini seçiyoruz.

Master sayfalar *.master uzantısına sahiptir, <html> <head> <body> gibi HTML elementlerini de içerisinde kapsar. Oluşturcağımız yazacağımız koda kısaca bakacak olursak:

<%@ master language="C#" compilewith="site.master.cs"
classname="ASP.site_master" %>

<html>
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form runat="server">
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</form>
</body>
</html>

Değişikliği zaten kolayca görebiliyoruz, @master ile başlayan bir sayfamız var ve compilewith, class diye iki yeni nitelik (attribute) görüyoruz. @master bu sayfanın bir master sayfa olacağını bildiren kısım; compilewith ile arka planda olan kodun adını ve classname sınıfın ismini temsil ediyor. asp:contentplaceholder web form kontrolü ise bizim bu master sayfa içerisine ekleyeceğimiz içeriği tutacak kısım. Bu sayfanın görüntüsüne Design ekranında bakacak olursak Şekil 3deki gibi bir görüntü elde ederiz:

Şekil 3

Dikkatinizi çektiyse ekran görüntüsünün sağ alt köşesinde Validation diye bir kısım var. ASP.NET 2.0 ile birlikte yazmış olduğunuz sayfalar istemcinin desteklediği yorumlayıcılara göre denetleniyor. Örneğin Şekil 3deki örneğimiz Internet Explorer 6.0 için validation yani denetlemesi gerçekleşecek. Bunu da bir ek bilgi olarak aklımızda tutalım.

Şimdi diyelimki sitemizin adı ".NET Dashboard". Bu sitenin tüm sayfaları içerisinde aynı logonun sayfaların en üst kısmında yer almasını istiyorum. O halde site.master koduna şu bilgiyi de ekliyorum:

<asp:image id="imgLogo" runat="server"
imageurl="images/dotnet_logo.jpg">
</asp:image>

Şimdi dönüp görünüme yeniden bakacak olursak karşımıza Şekil 4deki gibi bir içerik çıkacaktır:

Şekil 4

Böylece site içerisindeki bütün sayfalarda kullanmak istediğim bir master sayfayı tamamlamış oldum. Şimdi artık gidelim ve yeni bir sayfa ekleyelim. Yeni bir sayfa eklemek için aynen Master Sayfa yaratmak için yaptığım gibi ekle (add) diyerek Şekil 5de de görebileceğiniz gibi Content Page using Code Seperation seçeneğini seçiyoruz:

Şekil 5

Bizden istediği sayfaya bir isim vermemizi istiyor. Register.aspx diyelim, ardından Open butonuna tıkladığımızda karşımıza Şekil 6daki gibi bir ekran görüntüsü gelecektir:

Şekil 6

Şekil 6da gördüğünüz ekranda bize yeni eklemek istediğimiz sayfayı hangi master sayfadan türeterek oluşturmak istediğimizi sormaktadır. İşte önemli noktalardan birisi daha, bir sitede birden fazla master sayfa yapabiliriz. Bu güzel özellik sayesinde makalenin başında belirttiğimiz kişiye özel içeriği oluşturmamız artık oldukça kolay bir hale gelmektedir ve diğer bir yandan sitemiz içerisinde yer alan birkaç farklı şablonu hazırlamamız sayfaları oluşturma süremizi hızlandıracağı gibi aynı zamanda site içerisinde görsel bir uyum olmasını sağlayacaktır.

site.master dosyasını seçtikten sonra karşımıza gelen ekranda sitenin logosunun ve genel şablonunun hazır olarak oluşturulduğunu göreceğimiz Şekil 7de yer alan görüntü ile karşılaşırız:

Şekil 7

Bize düşen sadece içeriği eklemek olacaktır. Bu örnekte bir kayıt formu ekleyecek olursak Şekil 8de gördüğünüz ekran görüntüsü ortaya çıkacaktır. Burda önemli olan ise site içeriğinin tamamen görsel kalıtıma uygun tasarlanabilmiş olmasıdır:

Şekil 8

Sonuç olarak Şekil 8de sitemizin master sayfaya uygun olarak tasarlanmış halini görüyoruz. Master sayfalar ASP.NET 2.0 ile gelen güzel yeniliklerden sadece birisi. Kurumlar arası rekabetin çok arttığı ve hızlı yazılım geliştirmenin zaman açısından ciddi bir rekabet avantajı sağladığı günümüzde yeni eklenen özellikler sayesinde ASP.NET uygulamaları ile fark yaratmamız mümkün.

Bundan sonraki makalelerimizde de ASP.NET 2.0 ile gelen yeni özelliklerini incelemeye ve örneklerle sizlere aktarmaya devam edeceğiz. Yeni makalelerde görüşmek üzere..

Mehmet Nuri ÇANKAYA

cankaya@aspnedir.com

 

Kaynaklar: Microsoft Developer Network (MSDN) Dökümanları
Detaylı Bilgi İçin Adres: http://msdn.microsoft.com/asp.net/