Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET – Master Page Kullanımı

Web projelerimizde, sitemizin şeması belirli bir yapıda olup, belirli alanların dinamik ya da statik bir biçimde değiştirilmesi durumunda, her sayfada aynı şemayı tasarlayıp o şema üzerinde değiştirilicek yerlerin modifikasyonunu yapmak zahmetli bir iş olmakla beraber karışıklılığa yol açabilir.Bu durumda Asp.NET bize Master Page kontrolünü sunmaktadır.Sitemizin tasarımını Master Page sayfasında yapıp, o tasarımı kullanacak sayfalarıda bu Master Page sayfasından türeteceğiz.

Yukarıdaki şemaya dikkatinizi çekerim.Günümüzün sitelerinde GENELLİKLE Header,Menü ve Footer bölümlerinin, bütün sayfalarda aynı İçerik kısmının değişik olduğu dikkatinizi çekmedimi.Örnek olarak şu anda bulunduğunuz sitemi vereyim.Sitemin anasayfasına bakarsanız eğer(bloğumdan bahsediyorum)  Kategoriler,Etiketler vs.. bulunduğu bölüm yani sol menü ve Başlık kısmı bütün sayfalarda aynı geliyor.Ancak içerik kısmı(yazıların yayınlandığı kısım) sürekli değişiyor.İşte Master Page ile Header,Menü ve Footer kısımlarını sabit tutup, İçerik kısmını değiştirilebilir yapacağız.
Master Page ‘ den türeyen sayfalarda Header,Menü ve Footer kısımlarını değiştirme gibi bir imkanımız olmayacak.
Şimdi Visual Studio ortamında bir Asp.NET projesi açalım ve projemize bir Master Page sayfası ekleyelim.
Master Page sayfalarının uzantıları “.master” dır.Ben MasterPage.master adında bir sayfa oluşturuyorum.

---MasterPage.master---</pre>
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title></title>

</head>
<body>
 <form id="form1" runat="server">
 <div>
 <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

 </asp:ContentPlaceHolder>
 </div>
 </form>
</body>
</html>
<pre>

Sayfayı oluşturur oluşturmaz source kısmında yukarıdaki kodları göreceksiniz.

<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>

Html tagları arasındaki ContentPlaceHolder nesnesi, bu MasterPage.master sayfasından türeyen sayfalarda değiştirilebilecek alanı göstermektedir.
Aldığı id değerine göre türeyen sınıflardan bu ContentPlaceHolder nesnesine ulaşabilir ve gerekli değişikli yapabiliriz.
Şimdi MasterPage.master ‘ dan türeyen bir sayfa yapmalım.
Projemize sağ tıklayıp, “Add New Item” dedikten sonra açılan pencerede “Web Form” seçip, aşağıdaki kutucuklardan, “Select master page(Master Page Seç)” yazanını işaretleyip “Add” butonuna basınız.(Bu sayfanın adını ben MasterDeneme.aspx yaptım.)
“Add” butonuna bastıktan sonra bir ekran geleciktir.Projenizde kullanımınıza göre bütün Master Page sayfalar bu gelen ekranda listelenecektir.Ve sizde şu anda oluşturacağınız sayfanın hangi Master Pageden türemesini istiyorsanız onu seçeceksiniz.Benim projemde şu anda bir tane,MasterPage.master adında Master Page im olduğundan dolayı ben onu seçiyorum.En nihayetinde MasterPage.master dan türeyen MasterDeneme.aspx isminde bir sayfamız oluşmuştur.

---MasterDeneme.aspx---</pre>
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="MasterDeneme.aspx.cs" Inherits="MasterDeneme" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
<pre>

Yukarıda gördüğünüz, MasterDeneme.aspx sayfanın source kısmıdır.MasterPageFile=”~/MasterPage.master” komutu, bu sayfanın hangi Master Pageden türediğini söylüyor.Bu sayfaya eklenen Content nesnelerinden aşağıda bahsedelim.

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>

Benim MasterPage.master sayfamda,
<asp:ContentPlaceHolder id=”ContentPlaceHolder1″ runat=”server”>
</asp:ContentPlaceHolder>
kodlarıyla, bu Master Page ten türeyen diğer sayfalarda değiştirilebilecek alanları belirtmiştik.MasterDeneme.aspx sayfasında ise bu değiştirilebilecek alanı Content nesnesiyle belirtiyorum.
Dikkat ederseniz, MasterPage.master sayfasındaki ContentPlaceHolder nesnesinin id si “ContentPlaceHolder1” dir.MasterDeneme.aspx sayfasında Content nesnesinin ContentPlaceHolderID si “ContentPlaceHolder1” göstermektedir.Yani bu Content nesnesi sayesinde, Master Pagedeki “ContentPlaceHolder1” adlı değiştirilebilir alanı kontrol edeceğim anlamındadır.

Yapacağımız değişiklikleri <asp:Content.. </asp:Content> blokları arasında yapabiliriz.

Burada dikkatimizi çeken bir başka unsur da, html kodlarının olmayışıdır.İçerik sayfası, Master Page sayfasından türediği için, gerekli html kodlarını o sayfadan alacaktır.Bu yüzden html taglarına gerek yoktur.

Not!! Bir Master Page de birden fazla ContentPlaceHolder kullanılabilir.
Not!! Master sayfalar tarayıcılar tarafından gösterilmez.

Şimdi bir sonraki sayfada Master Page deki bir kontrole, o Master Page ten türeyen diğer sayfalardan ulaşma konusuna değineceğim.

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Mert dedi ki:

    Öncelikle merhaba. Master page.master.cs kısmına kod yazdığımda siteye ulaşılamıyor hatası alıyorum.. Sebebi nedir?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir