Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

ASP.NET Master Page

       ASP.NET ile ilişkisi olan herkes master page kavramını duymuştur.Master page’e en genel tabiliriyle bütün diğer saylara uygulanan bir şablon diyebiliriz.Master page’ler sayesinde  windows uygulamalarındaki gibi menüler oluşturabilir ve bütün sayfalara bu şablonu ekstra kod yazmadan ekleyebiliriz.Master page ile bütün sayfalar için genel bir yapı oluşturabiliriz ve siteye giren kullanıcı rahatlıkla istediği sayfaya kaybolmadan ulaşabilir. Bütün sayfalar tek bir master page kullandığı için genel şablonda yapılan değişiklik bütün sayfalarda aynı anda görülebilir. Master page’ler ile kodun bakımı ve geliştirmesi de çok kolaylaşmıştır.
Projemize master page eklemek için Add New Item dialog kutusunda Master page seçilir ve projemize .master uzantılı bir dosya oluşturulur.Normal web page’lerden farklı MasterPage sınıfından türemiş olmasıdır ve .master dosyası içinde @Page yerine @Master page direktifi ekli olarak gelir.

<%@Master Language=”C#” AutoEventWireup=”true” CodeFile=”Site.master.cs”
Inherits=”SiteMaster” %>

Content page master page’den kalıtım alan sayfadır.

<%@Page Title=”Home Page” Language=”C#” MasterPageFile=”~/Site.master”AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>
Bir content sayfası çağrıldında ve sayfa getirildiğinde @ Page direktifi okunur ve bu direktif bir master page’e referans gösteriyorsa master page de getirilir. Eğer ilk kez çağrılıyorlarsa ikisi de compile edilirler. Daha sonra Master page de bulunan ContentPlaceHolder kontrolü ile content birleştirilir(merge).Bir master
page’de birden fazla ContentPlaceHolder bulunabilir ve farklı içerikler bu kontrollere eklenebilir.

*** Genellikle Master page ler content page ‘lere genellikle bir etkisi olmaz. Ancak örneğin Content page’deki EnableViewState=true ve Master page’deki EnableViewState=false yapılırsa burada Master page daha baskındır ve sayfanın
view state’ini kapatır.

*** Bütün content saylarında ihtiyaç duyulan bir değeri Master Page’de public bir property yapıp content sayfasına MasterType direktifini ekleyerek content sayfasından erişebiliriz.

<%@MasterType VirtualPath=”~/Site.master” %>

Property’lerin dışında master page’deki kontrollere de content sayfasından erişilebilir.
Label l = (Label)Master.FindControl(“Label1”);


Nested Master Page
: Bazı durumlarda içice master page kullanma ihtiyacı duyabiliriz. Örneğin logosu ve
üst yazısı aynı fakat menüleri farklı sayfalar oluşturumamız gerektiği
durumlarda master page leri iç içe tanımlayabiliriz.

<%@Master Language=”C#” MasterPageFile=”~/Site.master” AutoEventWireup=”true”
CodeFile=”MasterPage.master.cs” Inherits=”MasterPage” %>

Master page’leri dinamik olarak da kod ile run time da değiştirmemiz mümkün.

void Page_PreInit(Object
sender, EventArgs e){

if (Session[“masterpage”]
!= null)

MasterPageFile = (string)Session[“masterpage”];

}

Reklamlar

Kasım 19, 2011 - Posted by | ASP.NET | , , , ,

Henüz yorum yapılmamış.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s