Master Page در ASP.NET 2.0
طراحی و پياده سازی يك وب سايت پويا مسائل و چالش های مختص به خود را دارد . هماهنگی بين عناصر موجود در سايت و يكسان بودن شكل ظاهری تمامی صفحات نمونه ای در اين زمينه است . ما نمی خواهيم سايتی را پياده سازی نمائيم كه هر صفحه آن شكل ظاهری مختص به خود را داشته باشد و با هر كليك كاربر برای حركت بين صفحات موجود در سايت اين تصور ايجاد گردد كه وی قدم در سايتی ديگر نهاده كه همه چيز آن با صفحه قبل تفاوت دارد. برای حل مشكل فوق سعی می گردد كه عناصر متداول موجود بر روی يك صفحه دقيقا" بر روی ساير صفحات نيز تكرار گردد تا تمامی صفحات دارای يك شكل يكسان هم از لحاظ طرح بندی و هم از نظر عناصر باشند . در صورت تغيير صفحات ( هم از لحاظ شكل ظاهری و هم بكارگيری عناصر جديد ) ،$ می بايست عناصر اضافه شده بر روی ساير صفحات نيز منتشر شوند تا تناسب سايت حفظ شود . ( عملياتی بس خسته كننده و تكراری كه فاقد هرگونه تجربه جديد است ) .
Master Page ارائه شده در ASP.NET 2.0 ، روشی منطقی و اصولی برای حل مشكلات فوق را در اختيار پياده كنندگان برنامه های وب قرار می دهد .
Master Page چيست ؟
- <LI dir=rtl>يك صفحه تمپليت است كه عناصر ويژوال به همراه رفتار آنان را برای تمامی صفحات موجود بر روی سايت مشخص می نمايد .
<LI dir=rtl>صفحه ای است كه شامل تگ های Html و كنترل هائی است كه قصد به اشتراك گذاشتن آنان را بين چندين صفحه موجود در سايت داريم . مثلا" در صورتی كه تمامی صفحات يك وب سايت می بايست دارای يك عنوان و يا footer مشابه و يا منوهای مسيرياب يكسانی باشند ، می توان آنان را در يك Master Page و تنها برای يك مرتبه تعريف نمود . در ادامه تمامی صفحاتی كه در ارتباط با Master Page می باشند قادر به استفاده از عناصر تعريف شده خواهند بود ( جلوه ای ديگر از توارث و اين مرتبه از يك صفحه به ساير صفحات ) . بديهی است در صورتی كه عناصر موجود در Master Page تغيير يابند ، ساير صفحات مرتبط با Master page متاثر از اين تغييرات خواهند شد . بدين ترتيب نگهداری سايت شرايط مطلوب تری را پيدا كرده و از تكرار كدهای غير ضروری به منظور اشتراك ساختار و رفتار سايت پيشگيری خواهد شد .
<LI dir=rtl>Master Page ، يك صفحه ASP.NET است كه دارای انشعاب master . است . صفحات فوق شامل عناصر HTML ،$ متن ايستا و كنترل های سرويس دهنده به منظور اشتراك بين تمامی صفحات می باشند. - يك Master Page ، شامل يك و يا چندين كنترل خاص با نام ContentPlaceHolder می باشد . يك ContentPlaceHolder ، ناحيه ای در Master Page را مشخص می نمايد كه محتوی آن از ساير صفحاتی كه در ارتباط با Master Page می باشند ،$مشتق خواهد شد( Content Pages ).شكل عمومی تعريف يك ContentPlaceHolder به صورت زير است :
<asp:ContentPlaceHolder id="id" Runat="Server"/>
ايجاد Master Page
- <LI dir=rtl> ايجاد يك Master Page همانند تعريف يك صفحه معمولی است . صفحات Master می توانند شامل تگ های Html، كنترل ها ، كد و يا هر نوع تركيبی از عناصر فوق باشند .
- برای مشخص نمودن Master Page از يك دايركتيو خاص با نام <% Master @%> استفاده می گردد :
<%@ Master Language="VB" %>
مثال : در اين مثال يك Master Page با نام Site.Master قالب و طرح كلی يك صفحه وب را مشخص می نمايد . محتوی صفحه درون يك جدول سازماندهی شده است . در اين رابطه از يك عنوان و يك منو مشتمل بر سه لينك استفاده شده است . عناصر فوق بر روی تمامی صفحاتی كه متاثر از Master Page می باشند ،$ نمايش داده خواهند شد . در Master Page فوق همچنين از يك كنترل ContentPlaceHolder با شناسه " Content" استفاده شده است كه در عمل محل نمايش محتوی ساير صفحات را مشخص می نمايد . در اين مثال صرفا" از يك ContentPlaceHolder استفاده شده است . در صورت ضرورت و با توجه به سياست های طراحی می توان از چندين ContentPlaceHolder ،$استفاده نمود .
Master Page : Site.Master
<html>
<head>
<title>تست</title>
</head>
<body>
<form Runat="Server">
<font Face="tahoma" Size="2">
تهيه شده در شركت سخاروش
<table border="1" dir="rtl" width="100%">
<tr>
<td colspan="2">
<div>استفاده از Master Page </div>
</td>
</tr>
<tr>
<td width="30%">
<b>منو</b><br/><br/>
<a href ="Page1.aspx"> صفحه اول</a><br/>
<a href ="Page2.aspx">صفحه دوم </a><br/>
<a href ="Page3.aspx">صفحه سوم </a><br/>
</td>
<td bgcolor="EEEEEE">
<asp:ContentPlaceHolder id="CONTENT" runat="Server" />
</td>
</tr>
</table>
</font>
</form>
</body>
</html> ايجاد Content Page
- <LI dir=rtl>Content Pages ، صفحاتی با انشعاب aspx . می باشند كه بگونه ای كد شده اند كه بتوانند از قالب تعريف شده در Master Page تبعيت كنند.
- صفحاتی كه قصد تبعيت و استفاده از قالب تعريف شده در Master Page را دارند از دايركتيو <% Page @%> به همراه صفت MasterPageFile كه مقدار آن نام Master Page است ، استفاده می نمايند :
<%@ Page MasterPageFile="Site.master" %>
- يك Content Page می تواند از كنترل های Content به منظور مشخص نمودن محتوياتی كه می بايست جايگزين محتوی بخش placeholder صفحه Master شود ،$استفاده نمايند . كنترل Content از طريق خصلت ContentPlaceHolderID با يك كنترل ContentPlaceHolder خاص مرتبط می گردد .
<%@ Page MasterPageFile="Site.master" %>
<asp:Content id="id" ContentPlaceHolderID="Content" Runat="Server">
محتويات صفحه
</asp:Content>
- <LI dir=rtl>مقدار ContentPlaceHolderID ، شناسه يك كنترل ContentPlaceHolder موجود در Master Page می باشد .تمامی محتوی شامل HTML ،$ متن و كنترل های سرويس دهنده می بايست درون كنترل <asp:Content> قرار گيرند . دقت داشته باشيد كه تگ های <html>, <head> و <body> نمی بايست درون Content Page قرار داده شوند . تمام اطلاعاتی كه درون كنترل <asp:Content> ارائه می شود ،$ محتويات مورد نظری می باشند كه می بايست در بخش مربوطه در Master Page نمايش داده شوند . از تگ <form> نمی توان درون يك Content Page استفاده نمود چراكه تگ فوق در Master Page استفاده شده و تمامی محتويات را شامل می شود . ( يك صفحه وب صرفا" می تواند يك تگ <form > داشته باشد )
- يك Content Page می تواند دارای چندين بخش <asp:Content> باشد . هر بخش يك كنترل ContentPlaceHolder متفاوت بر روی Master Page را هدف قرار خواهد داد.
مثال : جدول زير سه نمونه Content Page را به اسامی page2.aspx ، Page1.aspx و Page3.aspx كه از Site.master استفاده می كنند ، نشان می دهد .
Content Page: Page1.aspx
<%@ page language="VB" masterpagefile="Site.master" %>
<asp:Content ContentPlaceHolderID="content" Runat="Server">
<P Align="Right" dir="rtl">
استفاده از Master Page <br/>
( صفحه Page3.aspx فعال شده است )
</p>
</asp:content>
Content Page: Page2.aspx
<%@ page language="VB" masterpagefile="Site.master" %>
<asp:Content ContentPlaceHolderID="content" Runat="Server">
<P Align="Right" dir="rtl">
استفاده از Master Page <br/>
( صفحه Page3.aspx فعال شده است )
</p>
</asp:content>
Content Page: Page3.aspx
<%@ page language="VB" masterpagefile="Site.master" %>
<asp:Content ContentPlaceHolderID="content" Runat="Server">
<P Align="Right" dir="rtl">
استفاده از Master Page <br/>
( صفحه Page3.aspx فعال شده است )
</p>
</asp:content>
تركيب صفحات Master و Content
خروجی زير نحوه استفاده از Master Page و Content Page را نشان می دهد .
توضيحات :
- <LI dir=rtl>در زمان اجرای برنامه فوق شايد اينگونه احساس شود كه عملكرد برنامه مشابه فريم های Html و نظير يك frameset باشد . دقت داشته باشيد كه تكنولوژی پشت قضيه كاملا" متفاوت است .
<LI dir=rtl>Master Page يك لفافه و يا پوشش برای احاطه Content Pages را ارائه می نمايد . بنابراين مقصد لينك های موجود در بخش "منو" به سمت Content page مربوطه می باشد نه Master Page .
<LI dir=rtl> لود اوليه توسط Content Page با نام Page1.aspx انجام شده است نه از طريق صفحه Site.Master . - زمانی كه يك Content Page فعال می گردد ، محتويات آن با Master Page تركيب و متناسب با ناحيه ای كه توسط عناصر Master مشخص شده است ،$ نمايش داده می شوند .
علاقه مندی ها (Bookmarks)