ASP.NET Master Page Kullanımı
Gerçek hayatta yazılan uygulamalara ilişkin sayfa ya da ekranlar büyük oranda birbirini taklit eden ve tutarlı bir görselliğe sahiptir. Bu noktada bir projedeki olası onlarca ya da yüzlerce sayfayı her seferinde en baştan oluşturmaya çalışmak programcı için çok ciddi ve gereksiz bir iş yüküdür.
ASP.NET 2.0 versiyonuna kadar geliştiriciler bu yükü azaltmak için bir şablon sayfa tasarlayıp uygun bir isimle kaydederdi. Daha sonra diğer sayfaları bu şablondan copy paste yolu ile üretip adını değiştirerek kullanırdı. Bu kısmen (biraz da alternatifi olmadığı için uygulanan) kötü bir tekniktir. Keza bu şekilde üretilen sayfalarda sonradan bir değişiklik olursa tek tek tüm sayfalar değiştirilmek zorunda kalınır. Oysa master page kullanımı bu sorunu da ortadan kaldıran iyi bir tekniktir.
Geliştiriciler her bir sayfayı sıfırdan oluşturmak yerine, master page ile bir şablon tasarlamalı daha sonra da bu şablonu uygulamasını istediği sayfaları söz konusu master page’den türetmelidir. Türeyen sayfalar terminolojide Content Page ismi ile anılırlar. Bu teknik sayfa oluşturmayı kolaylaştırdığı gibi sonraki olası değişikliklerde sadece master sayfanın değişimi ile kendisinden türeyen sayfaların da tek hamlede değiştirilebilmesini sağlar.
Master page içerisinde, kendisinden türeyen sayfada özelleştirilmek üzere, özel alanlar bırakan ContentPlaceHolder isimli kontroller bulunur.
Herhangi bir aspx sayfası bir master page’dan türemiş ise; o sayfanın page direktifindeki MasterPageFile niteliği master sayfanın isim bilgisini taşımalıdır.
<%@Page MasterPagefile=”~/Sablon.master” %>
<asp:Content ID="xxx" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<!-- özel içerik buraya gelecek -à
</asp:Content>
Bu şekildeki bir sayfada normal html içerik yerine master’daki tanımlanmış olan ContentPlaceHolder isimli kontrol içine yazılacak kod ile içerik belirlenir.
Anahtar Notlar :
- Bir projede birden çok master page olabilir.
- Master page’lerin dosya uzantıları .master’dır.
- Bir master page başka bir master page’den türetilebilir.
- Burada türetme kelimesi gerçek anlamı ile kullanılmıştır. Yani nesne yönelimli programlama açısından Master Page deki kodlar da sayfalara türetme yoluyla aktarılmaktadır.
- Farklı cihaz türleri ve tarayıcılar için aynı sayfaya birden fazla master page ilişkilendirilebilir. Örneğin IE ve Firefox için bunun nasıl yapılacağı aşağıda örneklenmiştir :
<%@ Page IE:MasterPageFile="~/MasterIE.master" MozillaFirefox:MasterPageFile="~/MasterFirefox.master" ...>
Mobil cihazlar için ise aynı işlem şöyle de yapılabilir.
protected void Page_PreInit(object sender, EventArgs e)
{
HttpBrowserCapabilities hpc = Request.Browser;
if (hpc.IsMobileDevice)
{
Page.MasterPageFile = "MobilSablon.master";
}
}
Aykut TAŞDELEN
C ve Sistem Programcıları Derneği Eğitmeni
aykuttasdelen@csystem.org
