عبد الله الساهر
Dec 2005, 10:24 PM
إحدى المزيات الفريدة من نوعها، والتي ستجعل مطوري الويب ************************ Developers في راحة نفسية هي صفحات الأدوات الرئيسية Master Pages التي تقدمها ASP.NET Whidbey.
في المقال التالي سنتعرف هذه الصفحات و كيفية العمل معها بقليل من التعمق.
مما لا يختلف فيه اثنان، ولا يتناطح فيه عنزان أن الراحة النفسية هي مطلب أساسي لزيادة انتاجية الفرد، و من المستحيل أن تحل الراحة النفسية في ذهن مشغول بالتفكير سواء بحل المشاكل أو بالتخوف من عقبات قادمة. و مطور الويب ************************ Developer حاله كحال أي فرد في العالم، حالته النفسية يجب أن تكون مطمئنة دائما، دون تخوفات أو قلق لكي ينعكس ذلك على تطبيقاته الجميلة.
فماذا تتوقع من مطور يكتب شيفرات الـ Business Layer لموقعه، وهو يفكر في تصميم واجهة المستخدم User Interface، أو بالمعنى الأصح وهو خائف من تصميم تلك الـواجهة UI لتطبيقه ..! هل لك أن تتخيل حالة الاضطراب التي هو فيها ..! في الحقيقة ليس القصد من مقدمتي هذه أن أجعلك تذرف دمعة حزن على مطوري الويب أو على حالتهم النفسية، ولكني أحببت أن أذكرك بهذه المشاكل التي جعلت فريق تطوير ASP.NET في شركة Microsoft يضعوا لها حدا تقف عنده، كي تطمئن الحالة النفسية لمطوري الويب.
نعم، اطمئن. فبمجرد استخدامك للنسخة الجديدة من ASP.NET والمعروفة بـ Whidbey | ان كنت تواجه مشكلة مع المصطلح Whidbey فأنصحك بقراءة مقالي السابق | ستعلم يقيناً أن جميع هذه المخاوف من تصميم واجهة المستخدم والمشاكل التي يمكن أن تواجهها في عمليات التضمين Include و تصميم الأدوات الخاصة ستزول نوعا ما، و بمجرد أن تعتاد على الأدوات الجديده ستجد أن لا وجود لتلك المخاوف نهائيا.
ودع مشكالك باستخدامك Master Pages
حسناً، ان كنت أحد مطوري الويب الذين تكلمت عنهم في مقدمتي البسيطة، و الذين تتعب حالتهم النفسية من تصميم واجهة المستخدم و بالأخص من تكرار بعض الأجزاء لتوحيد جميع صفحات الموقع فأقدم لك و بكل فخر احدى ميزات Whidbey الجديده وهي Master Pages، بشكل عام Master Page تمكنك قادرا على انشاء قالباً واحداً لجميع صفحات الموقع بكل يسر و سهولة عن طريق الـ Form Designer المستخدم في تصميم صفحات ASPX العادية و بذلك تكون قد ودعت جميع المشاكل و المخاوف المتعلقة بالتضمين، و انشاء الأدوات الخاصة ************************ User Controls.
كيفية عمل Master Pages
في الحقيقة و كما ذكرت سابقا أن صفحات الأدوات الرئيسية Master Pages هي عبارة عن صفحات ASP.NET و لكن بامتداد .master هذه الصفحات يمكنها أن تحوي على الثوابت النصية Static Text ، أدوات الخادم Server Controls أو حتى أوسام HTML ، كما أنها تحوي أيضا على الاجزاء العلوية للصفحات مثل <html>, <head>, <form> . فعلى سبيل المثال يمنك أن تستخدم الوسم <img> داخل صفحات الـ Master لكي تصل الى غرض معين مثل وضع شعار أو ما الى ذلك.
من الجدير بالذكر هنا أنه يمكنك استخدام أداة ************************************************** ******PlaceHolder في أكثر من موضع في صفحة الـ Master و ذلك كي تحجز مكان في الصفحة (Master Page ) يمكنك ملأه بالبيانات المطلوبه في صفحات الموقع وذلك عن طريق انشاء صفحات المحتوى ************************************************** ****** Pages التي هي عبارة عن صفحات ASP.NET ايضا و لكنها متصلة ( مرتبطة ) بـصفحة Master معينه. في صفحات المحتوى يمكنك ادراج ما تريد عن طريق ما يعرف بـأدوات المحتوى ************************************************** ****** Controls والمرتبطه بـ ************************************************** ******PlaceHolder معينة. على سبيل المثال فليكن لدينا صفحة Master تحوي على ************************************************** ******Placeholder1 و ************************************************** ******Placeholder2، و صفحة محتوى ************************************************** ****** Page تحوي على اداتي محتوى ************************************************** ****** Controls الأولى مرتبطة مع ************************************************** ******Placeholder1 والثانية مرتبطة مع ************************************************** ******Placeholder2.
في صفحات المحتوى، و بعد انشاء أدوات المحتوى يمكنك ادراج النصوص، الصور أو حتى بيانات قادمة من مصدر للبيانات Data Source .. داخلها، وكل ما خارج أدوات المحتوى فهو مرفوض ( لن يظهر بالصفحة ).
بالمناسبة، يمكنك انشاء اكثر من صفحة Master واحدة لتخصيص أجزاء من موقعك بشكل، وأجزاء بشكل اخر.
في وقت التنفيذ Run-Time
الان، و بعد أن اطلعت على الفكرة الاساسية لصفحات الـ Master فأعتقد أن هناك مجموعة من الأسئلة عن سلوك MasterPages في وقت التنفيذ Run Time ( وقت طلب الصفحة ) لذا دعني أقول لك ماذا يحصل عن طلب الصفحة Page request ؟
· يقوم المستخدم ( صاحبنا ) بكتابة عنوان صفحة المتحوى بكل بساطة و ينقر Enter
· تحضر الصفحة المطلوبة .
· تسأل ان كانت على علاقة بأي صفحة من صفحات Master .
· ان نعم، فتحضر صفحة الـ Master ذات العلاقة.
· تدمج الصفحتان في صفحة واحدة.
· تتم عملية العرض على المتصفح.
وبذلك يتمتع المستخدم بمشاهدة خليط الصفحتين، وهو يعتقد أنها صفحة واحده !
انشاء العلاقة
العلاقة التي ذكرتها قبل قليل هي علاقة قوية، بسيطة مبنية على المحبة و الألفة بين صفحات المحتوى و صفحة الـ Master، ولإنشاء هذه العلاقة تحتاج لكتابة سطر واحد اما في صفحة ASPX أو في ************************.Config
· على مستوى الصفحة، باستخدام Page Directive
<%@ Master ************************************************** **************="C#" master="MySite.master" %>
· على مستوى التطبيق، باستخدام ************************.Config
<pages Master="MySite.Master" />
الأحداث Events
أنت الان على معرفة تامة بـماهية صفحات Masters و التي هي صفحات ASPX مما يعني أنها تحوي على نفس الأحداث التي تحويها الصفحات العادية، و هذا يعني أنه يمكنك انشاء مقابض الأحداث Event Handlers بكل بساطة داخل صفحة الـ Master.
كما تعرف، فالصفحة الناتجه للمستخدم هي عبارة عن خليط بين صفحة الـ Master و صفحة المحتوى، ولكل من الصفحتين أحداثه Events التي يمكن قبضها Event Handling من داخل الصفحة، بعبارة أخرى لا يمكنك أن تنشأ Event Handler في صفحة الـ Master لحدث موجود أصلا في ثفحة المحتوى، و العكس .
في الكثير من الحالات سيكون هناك تشابه في الاحداث التي سيتم تفعيلها للصفحتين مثل Page_Init و Page_Load وفي هذه الحالة يكون ترتيب الاحداث كما يلي، على التوالي :
1. حدث Initialization للأدوات الموجوده في صفحة الـ Master
2. حدث Initialization للأدوات الموجوده في صفحة الـمحتوى
3. حدث Initialization لصفحة الـ Master بذاتها.
4. حدث Initialization لصفحة المحتوى بذاتها.
5. حدث Load لصفحة المحتوى
6. حدث Load لصفحة الـ Master
7. حدث Load للأدوات الموجوده في صفحة Master
8. حدث Load للأدوات الموجوده في صفحة المحتوى.
قد يفيدك الترتيب السابق في تحديد المكان المناسب لوضع شفراتك Codes التي لها علاقة مع تنفيذ الأحداث.
صفحات Master المتداخلة Nested Master Pages
كما يقال ( المكتوب باين من عنوانه! ) فعنوان هذه الفقره واضح جدا، فهو يقول لك أنه بإمكانك عزيزي انشاء صفحتي Master احداهما ضمن الاخرى.
فان كنت تصمم موقعا لشركة كبيرة، بل كبيرة جدا .. فأنت تحتاج لأن يكون لك Master Page لصفحاتك، و أحد الشركات الفرعية التابعة للشركة الكبيرة التي تعمل لحسابها أرادت تصميم موقع (فرعي ) أي تود أن يكون لها قالب و طابع خاص، بالإضافة للمحافظة على طابع الشركة الأم ففي هذه الحالة استخدم Nested Master Pages . و حينها سيكون لديك Parent Master Page صفحة رئيسية أب ، و صفحة رئيسية ابن Child Master Page، الصفخة الابن تحمل تقريبا جميع خواص الصفحة الأب الا أنها مرتبطه مع صفحة Master وهي الصفحة الأب.
صفحة Parent Master Page
<%@ Master ************************************************** **************="C#" %>
<HTML>
<BODY>
<form id="Form1" runat="server">
<h1>Parent Master</h1>
<p>
<font color="red">This is Parent-master ************************************************** ******.</font>
</P>
<asp:********************************************** **********placeholder id="Main********************************************** **********" runat="server" />
</form>
</BODY>
</HTML>
صفحة Child Master
<%@ Master ************************************************** **************="C#" master="Parent.master"%>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="Main********************************************** **********" runat="server">
<asp:panel runat="server" id="panelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:panel runat="server" id="panel1" backcolor="lightblue">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******placeholder1" runat="server" />
</asp:panel>
<asp:panel runat="server" id="panel2" backcolor="pink">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******2" runat="server" />
</asp:panel>
</asp:panel>
</asp:********************************************** **********>
محتوى ينتمي الى الـ Child Master Page
<%@ Page ************************************************** **************="C#" master="Child.Master"%>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="************************************************** ******1" runat="server">
<asp:label runat="server" id="Label1"
text="Child label1" font-bold="true" />
<br>
</asp:********************************************** **********>
<asp:********************************************** ********** id="************************************************** ******2" ************************************************** ******placeholderid="************************************************** ******2" runat=server>
<asp:label runat="server" id="Label2"
text="Child label2" font-bold=true/>
</asp:********************************************** **********>
الوصول الى أعضاء الـ Master
يمكنك الوصول بسطور شيفراتك الرقيقة الى أعضاء صفحة الـ Master من خصائص Properties، طرق Methods أو أدوات Controls بشرط أن تكون الطرق Methods و الخصائص Properties معرفة على شكل عضو عام Public. و للوصول للأعضاء فإنك تسلك احدى الطريقتين :
في شاشة الكود Code Window استخدم الخاصيه Master والتي تعبر عن صفحة الـ Master. على سبيل المثال فليكن لديك الـخاصية Header في صفحة Master فإنك تقوم بما يلي :
Master.Header=”Hello Whidbey”
استخدام الطريقة FindControl ، انظر كيف يمكن الوصول لأداة Label ذات اسم masterHeader
Sub Page_Load()
Dim masterHeader As Label
masterHeader = CType(Master.FindControl("label1"), Label)
If Not (masterHeader Is Nothing) Then
masterHeader.Text = "My Page 1 "
End If
End Sub
بيدك .. !
ان كنت من المحظوظين الذين حصلوا على نسخة من Whidbey فيمكنك تطبيق ما قرأت قبل قليل خطوة بخطوة، و ان لم تكن Whidbey بين يديك، فلن تخسر شيئا ان اطلعت على التالي..
اضافة صفحة Master
من قائمة Project اختر Add New Item وسمها myMaster
الان نقوم بتصميم صفحة الMaster الخاصه بك و ذلك عن طريق الـ Form Designer و لكن الناتج
<%@ Master ************************************************** **************="C#" %>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="Main********************************************** **********" runat="server">
<asp:panel runat="server" id="panelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:panel runat="server" id="panel1" backcolor="lightblue">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******placeholder1" runat="server" />
</asp:panel>
<asp:panel runat="server" id="panel2" backcolor="pink">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******2" runat="server" />
</asp:panel>
</asp:panel>
</asp:********************************************** **********>
اضف صفحة ASPX الى المشروع من قائمة Project ايضا
في نافذة الكود أكتب السطر
<%@ page ************************************************** **************="C#" master=”myMaster.master” %>
خاتمة
في النهاية أود أن أذكر بأن Master Page هي احدى الخواص الجديدة المقدمة لمطوري الويب باستخدام ASP.NET في الاصدارة الجديدة منها و المعروفة Whidbey
أتمنى أن تكون Master Page قد جعلت نفسيتك مرتاحة.
مع تمنياتي لك براحة نفسية تامه.
في المقال التالي سنتعرف هذه الصفحات و كيفية العمل معها بقليل من التعمق.
مما لا يختلف فيه اثنان، ولا يتناطح فيه عنزان أن الراحة النفسية هي مطلب أساسي لزيادة انتاجية الفرد، و من المستحيل أن تحل الراحة النفسية في ذهن مشغول بالتفكير سواء بحل المشاكل أو بالتخوف من عقبات قادمة. و مطور الويب ************************ Developer حاله كحال أي فرد في العالم، حالته النفسية يجب أن تكون مطمئنة دائما، دون تخوفات أو قلق لكي ينعكس ذلك على تطبيقاته الجميلة.
فماذا تتوقع من مطور يكتب شيفرات الـ Business Layer لموقعه، وهو يفكر في تصميم واجهة المستخدم User Interface، أو بالمعنى الأصح وهو خائف من تصميم تلك الـواجهة UI لتطبيقه ..! هل لك أن تتخيل حالة الاضطراب التي هو فيها ..! في الحقيقة ليس القصد من مقدمتي هذه أن أجعلك تذرف دمعة حزن على مطوري الويب أو على حالتهم النفسية، ولكني أحببت أن أذكرك بهذه المشاكل التي جعلت فريق تطوير ASP.NET في شركة Microsoft يضعوا لها حدا تقف عنده، كي تطمئن الحالة النفسية لمطوري الويب.
نعم، اطمئن. فبمجرد استخدامك للنسخة الجديدة من ASP.NET والمعروفة بـ Whidbey | ان كنت تواجه مشكلة مع المصطلح Whidbey فأنصحك بقراءة مقالي السابق | ستعلم يقيناً أن جميع هذه المخاوف من تصميم واجهة المستخدم والمشاكل التي يمكن أن تواجهها في عمليات التضمين Include و تصميم الأدوات الخاصة ستزول نوعا ما، و بمجرد أن تعتاد على الأدوات الجديده ستجد أن لا وجود لتلك المخاوف نهائيا.
ودع مشكالك باستخدامك Master Pages
حسناً، ان كنت أحد مطوري الويب الذين تكلمت عنهم في مقدمتي البسيطة، و الذين تتعب حالتهم النفسية من تصميم واجهة المستخدم و بالأخص من تكرار بعض الأجزاء لتوحيد جميع صفحات الموقع فأقدم لك و بكل فخر احدى ميزات Whidbey الجديده وهي Master Pages، بشكل عام Master Page تمكنك قادرا على انشاء قالباً واحداً لجميع صفحات الموقع بكل يسر و سهولة عن طريق الـ Form Designer المستخدم في تصميم صفحات ASPX العادية و بذلك تكون قد ودعت جميع المشاكل و المخاوف المتعلقة بالتضمين، و انشاء الأدوات الخاصة ************************ User Controls.
كيفية عمل Master Pages
في الحقيقة و كما ذكرت سابقا أن صفحات الأدوات الرئيسية Master Pages هي عبارة عن صفحات ASP.NET و لكن بامتداد .master هذه الصفحات يمكنها أن تحوي على الثوابت النصية Static Text ، أدوات الخادم Server Controls أو حتى أوسام HTML ، كما أنها تحوي أيضا على الاجزاء العلوية للصفحات مثل <html>, <head>, <form> . فعلى سبيل المثال يمنك أن تستخدم الوسم <img> داخل صفحات الـ Master لكي تصل الى غرض معين مثل وضع شعار أو ما الى ذلك.
من الجدير بالذكر هنا أنه يمكنك استخدام أداة ************************************************** ******PlaceHolder في أكثر من موضع في صفحة الـ Master و ذلك كي تحجز مكان في الصفحة (Master Page ) يمكنك ملأه بالبيانات المطلوبه في صفحات الموقع وذلك عن طريق انشاء صفحات المحتوى ************************************************** ****** Pages التي هي عبارة عن صفحات ASP.NET ايضا و لكنها متصلة ( مرتبطة ) بـصفحة Master معينه. في صفحات المحتوى يمكنك ادراج ما تريد عن طريق ما يعرف بـأدوات المحتوى ************************************************** ****** Controls والمرتبطه بـ ************************************************** ******PlaceHolder معينة. على سبيل المثال فليكن لدينا صفحة Master تحوي على ************************************************** ******Placeholder1 و ************************************************** ******Placeholder2، و صفحة محتوى ************************************************** ****** Page تحوي على اداتي محتوى ************************************************** ****** Controls الأولى مرتبطة مع ************************************************** ******Placeholder1 والثانية مرتبطة مع ************************************************** ******Placeholder2.
في صفحات المحتوى، و بعد انشاء أدوات المحتوى يمكنك ادراج النصوص، الصور أو حتى بيانات قادمة من مصدر للبيانات Data Source .. داخلها، وكل ما خارج أدوات المحتوى فهو مرفوض ( لن يظهر بالصفحة ).
بالمناسبة، يمكنك انشاء اكثر من صفحة Master واحدة لتخصيص أجزاء من موقعك بشكل، وأجزاء بشكل اخر.
في وقت التنفيذ Run-Time
الان، و بعد أن اطلعت على الفكرة الاساسية لصفحات الـ Master فأعتقد أن هناك مجموعة من الأسئلة عن سلوك MasterPages في وقت التنفيذ Run Time ( وقت طلب الصفحة ) لذا دعني أقول لك ماذا يحصل عن طلب الصفحة Page request ؟
· يقوم المستخدم ( صاحبنا ) بكتابة عنوان صفحة المتحوى بكل بساطة و ينقر Enter
· تحضر الصفحة المطلوبة .
· تسأل ان كانت على علاقة بأي صفحة من صفحات Master .
· ان نعم، فتحضر صفحة الـ Master ذات العلاقة.
· تدمج الصفحتان في صفحة واحدة.
· تتم عملية العرض على المتصفح.
وبذلك يتمتع المستخدم بمشاهدة خليط الصفحتين، وهو يعتقد أنها صفحة واحده !
انشاء العلاقة
العلاقة التي ذكرتها قبل قليل هي علاقة قوية، بسيطة مبنية على المحبة و الألفة بين صفحات المحتوى و صفحة الـ Master، ولإنشاء هذه العلاقة تحتاج لكتابة سطر واحد اما في صفحة ASPX أو في ************************.Config
· على مستوى الصفحة، باستخدام Page Directive
<%@ Master ************************************************** **************="C#" master="MySite.master" %>
· على مستوى التطبيق، باستخدام ************************.Config
<pages Master="MySite.Master" />
الأحداث Events
أنت الان على معرفة تامة بـماهية صفحات Masters و التي هي صفحات ASPX مما يعني أنها تحوي على نفس الأحداث التي تحويها الصفحات العادية، و هذا يعني أنه يمكنك انشاء مقابض الأحداث Event Handlers بكل بساطة داخل صفحة الـ Master.
كما تعرف، فالصفحة الناتجه للمستخدم هي عبارة عن خليط بين صفحة الـ Master و صفحة المحتوى، ولكل من الصفحتين أحداثه Events التي يمكن قبضها Event Handling من داخل الصفحة، بعبارة أخرى لا يمكنك أن تنشأ Event Handler في صفحة الـ Master لحدث موجود أصلا في ثفحة المحتوى، و العكس .
في الكثير من الحالات سيكون هناك تشابه في الاحداث التي سيتم تفعيلها للصفحتين مثل Page_Init و Page_Load وفي هذه الحالة يكون ترتيب الاحداث كما يلي، على التوالي :
1. حدث Initialization للأدوات الموجوده في صفحة الـ Master
2. حدث Initialization للأدوات الموجوده في صفحة الـمحتوى
3. حدث Initialization لصفحة الـ Master بذاتها.
4. حدث Initialization لصفحة المحتوى بذاتها.
5. حدث Load لصفحة المحتوى
6. حدث Load لصفحة الـ Master
7. حدث Load للأدوات الموجوده في صفحة Master
8. حدث Load للأدوات الموجوده في صفحة المحتوى.
قد يفيدك الترتيب السابق في تحديد المكان المناسب لوضع شفراتك Codes التي لها علاقة مع تنفيذ الأحداث.
صفحات Master المتداخلة Nested Master Pages
كما يقال ( المكتوب باين من عنوانه! ) فعنوان هذه الفقره واضح جدا، فهو يقول لك أنه بإمكانك عزيزي انشاء صفحتي Master احداهما ضمن الاخرى.
فان كنت تصمم موقعا لشركة كبيرة، بل كبيرة جدا .. فأنت تحتاج لأن يكون لك Master Page لصفحاتك، و أحد الشركات الفرعية التابعة للشركة الكبيرة التي تعمل لحسابها أرادت تصميم موقع (فرعي ) أي تود أن يكون لها قالب و طابع خاص، بالإضافة للمحافظة على طابع الشركة الأم ففي هذه الحالة استخدم Nested Master Pages . و حينها سيكون لديك Parent Master Page صفحة رئيسية أب ، و صفحة رئيسية ابن Child Master Page، الصفخة الابن تحمل تقريبا جميع خواص الصفحة الأب الا أنها مرتبطه مع صفحة Master وهي الصفحة الأب.
صفحة Parent Master Page
<%@ Master ************************************************** **************="C#" %>
<HTML>
<BODY>
<form id="Form1" runat="server">
<h1>Parent Master</h1>
<p>
<font color="red">This is Parent-master ************************************************** ******.</font>
</P>
<asp:********************************************** **********placeholder id="Main********************************************** **********" runat="server" />
</form>
</BODY>
</HTML>
صفحة Child Master
<%@ Master ************************************************** **************="C#" master="Parent.master"%>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="Main********************************************** **********" runat="server">
<asp:panel runat="server" id="panelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:panel runat="server" id="panel1" backcolor="lightblue">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******placeholder1" runat="server" />
</asp:panel>
<asp:panel runat="server" id="panel2" backcolor="pink">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******2" runat="server" />
</asp:panel>
</asp:panel>
</asp:********************************************** **********>
محتوى ينتمي الى الـ Child Master Page
<%@ Page ************************************************** **************="C#" master="Child.Master"%>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="************************************************** ******1" runat="server">
<asp:label runat="server" id="Label1"
text="Child label1" font-bold="true" />
<br>
</asp:********************************************** **********>
<asp:********************************************** ********** id="************************************************** ******2" ************************************************** ******placeholderid="************************************************** ******2" runat=server>
<asp:label runat="server" id="Label2"
text="Child label2" font-bold=true/>
</asp:********************************************** **********>
الوصول الى أعضاء الـ Master
يمكنك الوصول بسطور شيفراتك الرقيقة الى أعضاء صفحة الـ Master من خصائص Properties، طرق Methods أو أدوات Controls بشرط أن تكون الطرق Methods و الخصائص Properties معرفة على شكل عضو عام Public. و للوصول للأعضاء فإنك تسلك احدى الطريقتين :
في شاشة الكود Code Window استخدم الخاصيه Master والتي تعبر عن صفحة الـ Master. على سبيل المثال فليكن لديك الـخاصية Header في صفحة Master فإنك تقوم بما يلي :
Master.Header=”Hello Whidbey”
استخدام الطريقة FindControl ، انظر كيف يمكن الوصول لأداة Label ذات اسم masterHeader
Sub Page_Load()
Dim masterHeader As Label
masterHeader = CType(Master.FindControl("label1"), Label)
If Not (masterHeader Is Nothing) Then
masterHeader.Text = "My Page 1 "
End If
End Sub
بيدك .. !
ان كنت من المحظوظين الذين حصلوا على نسخة من Whidbey فيمكنك تطبيق ما قرأت قبل قليل خطوة بخطوة، و ان لم تكن Whidbey بين يديك، فلن تخسر شيئا ان اطلعت على التالي..
اضافة صفحة Master
من قائمة Project اختر Add New Item وسمها myMaster
الان نقوم بتصميم صفحة الMaster الخاصه بك و ذلك عن طريق الـ Form Designer و لكن الناتج
<%@ Master ************************************************** **************="C#" %>
<asp:********************************************** ********** id="************************************************** ******1" ************************************************** ******placeholderid="Main********************************************** **********" runat="server">
<asp:panel runat="server" id="panelMain" backcolor="lightyellow">
<h2>Child master</h2>
<asp:panel runat="server" id="panel1" backcolor="lightblue">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******placeholder1" runat="server" />
</asp:panel>
<asp:panel runat="server" id="panel2" backcolor="pink">
<p>This is childmaster ************************************************** ******.</p>
<asp:********************************************** **********placeholder id="************************************************** ******2" runat="server" />
</asp:panel>
</asp:panel>
</asp:********************************************** **********>
اضف صفحة ASPX الى المشروع من قائمة Project ايضا
في نافذة الكود أكتب السطر
<%@ page ************************************************** **************="C#" master=”myMaster.master” %>
خاتمة
في النهاية أود أن أذكر بأن Master Page هي احدى الخواص الجديدة المقدمة لمطوري الويب باستخدام ASP.NET في الاصدارة الجديدة منها و المعروفة Whidbey
أتمنى أن تكون Master Page قد جعلت نفسيتك مرتاحة.
مع تمنياتي لك براحة نفسية تامه.