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”];

}

November 19, 2011 - Posted by | ASP.NET | , , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s