Master Page Nedir?

asp.net Master Page Nedir?

Master Page (Web Form Ana Sayfası), 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(aspx.cs) 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şa 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. Yani aşağıdaki gibi bir yapıya sahip olan, sayfalarımız olsun.

Resme 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. Proje menüsünden Add New Item(yeni öğe ekle) deyip, Master Page(Web Form Ana Sayfası) ekliyoruz, dosyamın adı bende Site1.master



Sayfam oluşturulduğunda kod bloğunda tagini görebilirsiniz. Bir yer tutucu eklenmiş durumda. Yani ilk aşamada kod bloğum şu şekilde:

<%@ Master Language=”C#” AutoEventWireup=”true” CodeBehind=”Site1.master.cs” Inherits=”kitap_test_master.Site1″ %>

<!DOCTYPE html>

<html>

<head runat=”server”>

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″/>

    <title></title>

    <asp:ContentPlaceHolder ID=”head” runat=”server”>

    </asp:ContentPlaceHolder>

</head>

<body>

    <form id=”form1″ runat=”server”>

        <div>

            <asp:ContentPlaceHolder ID=”ContentPlaceHolder1″ runat=”server”>

            </asp:ContentPlaceHolder>

        </div>

    </form>

</body>

</html>

Görüldüğü gibi bu kod bloğunda da 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ı. Şimdi header kısmında bir hoşgeldiniz yazısı, footer kısmında bir copyright yazısı olsun. Form alanı Kodlarımı şu şekilde düzenliyorum.

    <form id=”form1″ runat=”server”>

    <div><h1>WEB Sitemize Hoşgeldiniz</h1>

        <asp:contentplaceholder id=”ContentPlaceHolder1″ runat=”server”>

        </asp:contentplaceholder>

        <p>Copyright Dündar Uçar MTAL</p>

    </div>

    </form>

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. Proje > Yeni öğre ekle > Anasayfa ile web form (masterpage web form) sonra Ekle butonuna tıklarız. Açılan pencereden dosyamın adı yukarıda oluşturduğumuz masterpage dosyasını (site1.Master) seçip tamam diyoruz.

Eklemiş olduğumuz web formu şu şekilde düzenliyoruz.

<%@ Page Title=”” Language=”C#” MasterPageFile=”~/Site1.Master” AutoEventWireup=”true” CodeBehind=”WebForm1.aspx.cs” Inherits=”kitap_test_master.WebForm1″ %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”head” runat=”server”>

</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”server”>

<h3>Sitemize tekrardan hoşgeldiniz, umarız sitemizden memnun kalırsınız.</h3>

</asp:Content>

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

<%@ Page Title=”” Language=”C#” MasterPageFile=”~/Site1.Master” AutoEventWireup=”true” CodeBehind=”hakkimizda.aspx.cs” Inherits=”kitap_test_master.hakkimizda” %>

<asp:Content ID=”Content1″ ContentPlaceHolderID=”head” runat=”server”>

</asp:Content>

<asp:Content ID=”Content2″ ContentPlaceHolderID=”ContentPlaceHolder1″ runat=”server”>

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

</asp:Content> Görüldüğü gibi örnek oldukça basit. Zaten burada anlatmak istediğimiz master page üzerinden rahatlıkla istediğimiz kadar web form hazırlayabilmemiz. Örnekte bir adet ContentPlaceHolder kullandık, bunların sayısı çok daha fazla olabilir.

İlgili Mesajlar

Abone ol
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments