Anasayfa / Yazılım / ASP.NET / Master Page Nedir?

Master Page Nedir?

Master Page ilk olarak ASP.NET 2.0 ile gelmiştir ve çok önemli bir özelliktir. Master Page, web kullanıcı kontrollerine çok fazla benzemektedir. Kullanıcı kontrollerinden farkı, HTML ve diğer kontrollerin bir arada tümleşik halde bulunabilmesidir. Master Page, ek özelliklerle, olaylarla, metotlarla geliştirilebilir ve yine web kullanıcı kontrolleri gibi son kullanıcı tarafından direkt olarak görüntülenemezler. Mutlaka bir web form içinde yer alırlar ya da directive edilirler diyebiliriz.

Master Page mantığı aslında bizim yapmış olduğumuz projelerin temel yapısını oluşturma amaçlı kullanılır. Yani bir Master Page ile genel olarak tüm sayfalarımda olabilecek özellikleri, komponentleri, web kullanıcı kontrollerini bir master page içinde oluşturabilir ve daha sonra bu master page’i istediğim web formlarında kullanabilir ve istediğim web formu çok daha hızlı, dinamik, daha performanslı bir şekilde oluşturabilirim.

Bir Master Page birden çok web formu barındıran bir şablondur aslında yani bir template’dir. Örneğin bir master page, her web sayfasında olan header, footer, navigation bar gibi elementleri barındırabilir ve bunu daha sonra tüm sayfalarımızda kullanabilmek için bize kolaylık sağlayabilir.

Master Page dosyalarının uzantısı .net ortamında master‘dır. Ayrıca tıpkı web formları ve web user kontrolleri gibi codebehind dosyalarını destekler. Tüm master page dosyaları System.Web.UI.MasterPage sınıfından miras almaktadırlar.

WEB sayfalarımızı oluştururken sayfa yapılarımızı oluşturma esnasında Master Page veya WEB User kontrolleri kullanmamız bize modifikasyon ya da sitemizi büyütme, geliştirme, genişletme aşamasında büyük kolaylıklar sağlar. Sayfalarımızda bu özellikleri kullandığımızda ileride sadece bir master page yapısını ya da bir web user kontrol yapısını değiştirerek çok basit ve hızlı bir şekilde tüm sayfalarımızda gerekli düzenlemeleri yapabiliriz.

Daha önce bahsettiğim gibi bir master page HTML ve çeşitli asp kontrolleri kullanılarak inşaa edilebilir. Özel olarak bir ContentPlaceHolder kontrolü kullanılır. ContentPlaceHolder bir yer tutucudur.Bu yer tutucuda ilgili web formunun ihtiyaç duyduğu kontroller her ne ise bu yer tutucu içinde tutulurlar. Bir Master Page oluştururken , ve tagleri kullanılır.

Basit bir Master Page nasıl hazırlanır bunu örneklemek istiyorum. Diyelim ki bir çok sayfadan oluşan bir web sitemiz mevcut. Bu sayfaların hepsinde standart olarak bir header, footer ve navigasyon menü olmuş olsun. Tabi biz bunları yapmayacağız :)) Bir varsayım gibi.. Yani aşağıdaki gibi bir yapıya sahip olan, sayfalarımız olsun.

Resime göz atalım burada header, menu ve footer diyelim ki her sayfamızda aynı olacak, içerik ise sayfadan sayfaya değişecek. Dolayısı ile buradaki en mantıklı başvurulacak yöntem her sayfam için genel bir şablon oluşturmam yani bir master page oluşturmam. Master Page’de Header, footer ve menu olacak ayrıca content olacak, fakat diğer üç kısım standart olarak kalacak. Content ise sayfadan sayfaya değişebilecek. Bu şekilde bir yapı kurmak istiyorum.

Şimdi bu örnek tabi basit bir örnek olsun diye belirttim dolayısı ile bir menü oluşturmayacağım. Header, footer ve içerik yani content alanı için placeholder oluşturacağım.

Öncelikle WEB Site projemize bir adet master page ekliyoruz. Add New Item deyip, Master Page ekliyoruz, dosyamın adı bende MasterPage.master herhangi bir değişiklik yapmadım. Sayfam oluşturulduğunda kod bloğunda tagini görebilirsiniz. Direktmen bir yer tutucu eklenmiş durumda. Yani ilk aşamada kod bloğum şu şekilde :

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





    
    
    


    

Görüldüğü gibi bu kod bloğundada dikkat edileceği üzere master page önemli bir detay dışında tıpkı bir web formu gibi. Peki nedir bu önemli detay?

Boş bir ContentPlaceHolder kontrolünün eklenmiş olması tabii ki. Şimdi header kısmında bir hoşgeldiniz yazısı, footer kısmında bir copyright yazısı olsun. Kodlarımı şu şekilde düzenliyorum. Yani benim header ve footer alanım standart. Menu yapmayacaktık zaten, ayrıca bu örneğimiz çok basit bir örnek, sadece mantığı kapmak için 🙂

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





    
    
    


    

WEB Sitemize Hoşgeldiniz

Copyright Falan Filan

Görüldüğü gibi content alanım boş, çünkü ben bu kısmı sayfadan sayfaya değişsin istiyordum.

Şimdi uygulamama bir adet aspx form yani web form ekliyorum. Benim dosyamın adı default.aspx. Bu dosyayı eklerken açılan pencerede dikkat etmem gereken bir nokta var, visual studio 2010 kullanıcıları sağ altta “select master page” kutucuğunu görebilirler, bunu işaretliyoruz. Tam olarak şurada :

Daha sonra açılan pencereden ilgili master page’i seçin. Böylelikle Visual Studio bizim için ilgili kodu oluşturacağımız WEB forma ekleyecek.Tam olarak eklenen kod bizim örneğimiz için şu :

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

Bu kodu tabi web form eklerken eğer select master page kısmını seçmezsek manuel olarak da ekleyebiliriz, hiç sorun değil.

Eklemiş olduğumn web formu şu şekilde düzenliyorum.

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




Sitemize tekrardan hoşgeldiniz, umarız sitemizden memnun kalırsınız.

Aynı şekilde bir web form daha ekliyorum adını hakkimizda.aspx veriyorum ve yine bu formuda masterpage ile bağlıyorum, ilgili kodları şu şekilde :

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



Hakkımızda denecek o kadar çok şey var ki, 
biz şirket olarak en iyisini sizler için yapmaya hazırız.

Görüldüğü gibi örnek oldukça basit. Zaten benimde burada anlatmak istediğim görüldüğü üzere bir master page üzerinden rahatlıkla istediğimiz kadar web form hazırlayabilmemiz. Örnekte bir adet ContentPlaceHolder kullandım, bunların sayısı çok daha fazla olabilir tabii ki.

{filelink=20}

31 yorum

  1. Master Page mantığı aslında bizim yapmış olduğumuz projelerin temel yapısını oluşturma amaçlı kullanılır. Yani bir Master Page ile genel olarak tüm sayfalarımda olabilecek özellikleri, komponentleri, web kullanıcı kontrollerini bir master page içinde oluşturabilir ve daha sonra bu master page?i istediğim web formlarında kullanabilir ve istediğim web formu çok daha hızlı, dinamik, daha performanslı bir şekilde oluşturabilirim.

    Bir Master Page birden çok web formu barındıran bir şablondur aslında yani bir template?dir. Örneğin bir master page, her web sayfasında olan header, footer, navigation bar gibi elementleri barındırabilir ve bunu daha sonra tüm sayfalarımızda kullanabilmek için bize kolaylık sağlayabilir.

  2. tşk ederim admin!! bu tarz konularda sorularımız olursa yönelebilir miyiz sana?

  3. tşk ler admin! piramit şeklinde c# dili ile bir kod yazmak istiyorum yardımci olur musun?

  4. Elimden geldiğince, yapabildiğim kadarı ile yardımcı olmaya çalışırım.

    Piramit şeklinde mesela yıldızları konsol uygulamasında yazdırabilirsiniz.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace ConsoleApplication1
    {
    class Program
    {
    static void Main()
    {
    for ( int i = 0; i < 10; i++ ) { for (int k=i; k <10; k++) { Console.Write(" "); } for (int j = 2*i+1; j > 0; j–)
    {
    Console.Write(“*”);
    }
    Console.WriteLine(“”);
    }
    }
    }
    }

  5. çok tşk ederim sayende ödevimi verdim!

  6. asp de for döngüsü ile matrix uygulamasını nasıl yapabiliriz?

  7. database oluştururken name oluşturmak neden zorunlu? iki yerdede istiyor…

  8. ASP’de for döngüsü ile matrix yapabilirsiniz tabii ki, bunun içinde console.write yerine Response.Write yapınız.

    Diğer database sorunuza gelince, o sorunuzu tam olarak anlayamadım.

  9. sql de mirroring ne demektir?

  10. Admin merhaba.

    asp.net’e eğer hakimsen mail adresini alabilir miyim ?

    Şu an üzerinde çalıştıgım bir proje var. Onunla ilgili sorularım oluyor.

    Yardımcı olabilirsen sevinirim.

    Kolay gelsin.

  11. Sorularınızı burada sorabilirsiniz ben ve arkadaşlar elimizden geldiğince yardımcı olmaya çalışırız.

  12. admin nvarchar ile varcharın farkı nedir?

  13. var char ile nvarchar tip olarak birbirile aynıdır ancak nvarchar tipinde unicode karakterlerde desteklenir. Türkçe karakterler gibi. Veya şöyle düşünün bir veri tabanı oluşturduğunuz ilgili alanda farklı dillerde veri girişi söz konusu.. Burada nvarchar kullanmak doğru olur

  14. admin C# da site hazırlayacam siteye video yüklemek istiyorum ama nasıl yapılacağını bilmiyorum bana bu konu hakkında bilgi verebilir misin???

  15. Hocam peki head kısmında kullandığım scriptleri mesela jquery gibi falan, yine aynı şekilde html formatında mı ekliyorum?

  16. Evet masterpage sayfalarınıza kullanmış olduğunuz scriptleri veya bunların linklerini, CSS’leri de ekleyebilirsiniz. Ve HTML sayfalarında olduğu gibi işlem yapmanız yeterli.. Bundan sonraki her ASP.NET sayfasında bu sizin MAsterPage sayfasında eklemiş olduğunuz scriptlerde dahil olmak üzere gelecektir. gibi

  17. Videoyu Youtube vb yerden referans alarak mı yüklemek istiyorsunuz?

  18. iframe ile farkı nedir peki ?

  19. iframe den çok çok farklı. iframe yapısında bir web sayfası içinde başka bir web sayfası çağırırsınız. Master Page yapısı ise bir nevi template yani şablondur. Ve aynı benzer nitelikte sayfaların daha hızlı daha standart bir şekilde oluşturulması için kullanılır. Sadece değişecek bölgeleri değiştirirsiniz.

  20. Merhaba, ben otomasyon ödevim için yaklaşık elli kadar web form oluşturup kodladım.şimdi master page eklemek istiyorum.önceden oluşturduğum web formlara master page ekleyebilir miyim?

  21. benim bir sorum olacaktı.
    asp.net yeni öğrenmeye çalışıyorum, takıldığım bir yer var,
    projemde default.aspx
    oltında default.aspx.vb
    kayıt yerinde de ayrı ayrı gözükmekte.
    bunu nasıl yayınlarım.( site için ) iki dosyayı da site ana dizinine mi atmam gerek yoksa birleştirmek mi eğer öğle ise nasıl birleştiririm teşekkürler şimdiden.

  22. Erkan Bey birleştirmenize gerek yok, her ikisini de ana dizine atın ve yayınlayın. Zaten WEB browserınız code behind olarak kodları yazdığınız vb dokümanını okumayacak, default.aspx sayfasını çalıştıracaktır.

  23. Harun Bey mümkün ancak çok basit bir şekilde olmuyor. Öncelikle Master Page oluşturacaksınız. İçerik sayfalarınızda form elementleri olmayacak. MasterPage tanımlaması her bir sayfa için tanımlanacak.

  24. Merha kolay gelsin ismail kardeşim.Bu anşattığınız master page yi visual studio dışında başka bir programda yapabiliyor muyuz. Ya da master page gibi işlevi aynı ama ismi ve yapıldığı program farklı olan bir kontrol yolu var mı?

  25. birde asp dışında başka bir dille yapılabilir mi.Mesala php ile yapılır mı?

  26. Tabii ki örneğin Dreamweaver da ASP.NET C#, VB template oluşturabilirsiniz. Dreamweaver ilgili konuyu template olarak adlandırmaktadır. Belirttiğiniz gibi PHP ile de master page yapabilirsiniz.

  27. iyi günler. bir proje yapıyorum aslında çok basit bir yerinde takılıp kaldım.

    tarzında kod sayfayı açtığımda hata veriyor hataysa:

    Warning 12 The ‘ContentPlaceHolderID’ attribute has not been specified.

    hatanın ne oldugunu anlıyorum ancak yeni olduğum için nasıl düzelteceğimi bilmiyorum. Yardım eder misiniz Çok teşekkür ederim.

  28. Kodlarınızı görmemiz gerek Kübra Hanım, silinen kısımlar vb olabilir. Özellikle ContentPlaceHolder ile ilgili kod kısımlarına bakınız.

  29. Admin ‘Harika’ yazılar yazıyorsunuz, paylaşımlarınızdan sürekli faydalandığım için size bir teşekkürü borç bildiğimden bu satırları yazıyorum…Teşekkürler…

  30. hocam visual std. 2010da c# ta bir site yapıyorum footer nesnesi olmuyor asp.x sayfasına yapıyorum stylesheet.css de algılamıyor direk footer diye yazıyorum olmuyor yardımcı olursanız?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir