السلام عليكم ورحمة الله وبركاته
احد المفاجئات من العيار الثقيل التي فجرتها مايكروسوفت في ال asp.net 2005
خاصية جديدة وهي خاصية الصفحة الأم Master Page
تخيل ان عندك مشروع مكون من 200 صفحة مثلاً وكل الصفحات تتكون من نفس التقسيمه مع اختلاف المحتوى مثل مجلات ادارة المحتوى ومجلة النيوك او مجلة جملة وغيرها من مجلات ادارة المحتوى بمختلف اللغات
في درس سابق شرحنا كيفية توريث صفحات الكنترول وفقط للتذكير قلنا انه عندما يكون لدينا موقع تتشابه كل صفحاته بالشكل العام مثل المجلات تتكون من تروسية علوية (هيدر الموقع) وترويسة سفلية (فوتر الموقع) ومجموعة من القوائم باليمين واليسار فاننا نكتفي بعمل اربع صفحات كنترول واحده للهيدر والثانيه للفوتر والثالثه للقوائم اليمين والرابعه للقوائم اليسار
ونستوردها في كل صفحاتنا وهكذا اذا احتجنا فيما بعد التعديل على الهيدر يكفينا فقط التعديل على صفحة الهيدر لكي تتعدل في كل صفحات الموقع بشكل تلقائي ولمن يريد مراجعة الدرس لاهميته فهو موجود على هذا الرابط وكذلك يجب مراجعته لاننا سوف نستخدم صفحات الكنترول في درسنا هذا
http://www.swalif.net/softs/showthread.php?t=188255
نبدأ الدرس على بركة الله تعالى
في البداية ماهي الصفحة الأم Master Page
هي صفحة تستطيع ان تورث التصميم العام لها لباقي الصفحات
مع امكانية اضافة محتويات مختلفة لكل صفحة
للتوضيح اكثر في الموضوع الموجود له رابط بالاعلى عندما استخدمنا صفحات ال Web User Control
قمنا باضافتها في كل صفحات الموقع وكانت كل صفحة تتكون من قائمة يمين وقائمة يسار وهيدر وفوتر ومنطقة في الوسط تحتوي على محتويات الصفحة نفسها
حيث كان الهيدر والفوتر والقوائم ثابته في كل الصفحات لانها في الاصل تتكون من اربع صفحات Web User Control بينما قمنا بوضع محتويات الصفحة نفسها في منطقة المنتصف
فاذا قمنا بتغيير محتوى صفحة الهيدر سوف تتحدث تلقائي في كل صفحات الموقع
ولكن ماذا لو قمنا بتغيير اسم صفحة الهيدر بدلا من header قمنا بتسميتها hed
هنا يجب علينا ان نغير اسمها في كل صفحات الموقع لاننا مسبقا قمنا باستيرادها باسم header
الصفحة الأم توفر علينا الوقت والجهد في مثل هذه المواقف كما انها توفر علينا الوقت والجهد في اعادة اكواد ترتيب وتنسيق الصفحة واماكن صفحات الهيدر والفوتر وغيرها في كل صفحة جديدة
حيث نقوم بترتيب الصفحة الأم بالطريقة التي نرغب بها ونضغ فيها اي عدد نريد من صفحات ال Web User Control ونقسمها بالطريقة التي نرغب ومن ثم عند انشاء اي صفحة جديدة في الموقع يكفي فقط ان تحدد عنوان الصفحة الأم لكي يتم استيراد كل التصميم بشكل للصفحة الام في داخل الصفحة الجديدة بشكل تلقائي
وهكذا فانك توفر على نفسك الوقت والجهد في عملية التصميم وكذلك لو رغبت باجراء اي تحديث او تعديل مستقبلي على تصميم الموقع
سوف نقوم الان باضافة صفحة أم جديد للمشروع اسمها MasterPage.master
نقوم بعملية انشاء عنصر جديد ونختار من القائمة MasterPage ونقوم باضافة الصفحة كما في الصورة التالية
الان سنجد الصفحة قد تم اضافتها للمشروع باسم MasterPage.master وهو الاسم الافتراضي لها
وطبعا تكون خالية تماما الا من عنصر واحد اسمه contentplaceholder كما في الصورة التالية
عند مشاهدة كود الصفحة سوف تلاحظ كود العنصر contentplaceholder كما في الصورة التالية
هذا العنصر مهم جدا ومكان هذا العنصر في الصفحة هو محتوى الصفحة التي سيتم توريث الصفحة الام لها
بمعنى اخر لو كانت الصفحات في موقعنا تتكون من هيدر وفوتر وقائمة يمين وقائمة يسار ومحتوى الصفحة يكون في المنتصف اسفل الهيدر واعلى الفوتر وبين القوائم اليمين واليسار فاننا يجب ان نضع هذا العنصر في نفس المكان يعني اسفل الهيدر واعلى الفوتر وبين القوائم اليسار واليمين
وعندما يتم توريث هذه الصفحة لصفحة aspx في الموقع فسوف تلاحظ ظهور الشكل العام للصفحة االأم في صفحة ال aspx بينما مكان العنصر contentplaceholder في الصفحة الأم سوف تجد فيه فراغ يمكنك التحكم به في صفحة ال aspx يعني يمكنك وضع محتويات صفحتك هناك
ان شاء الله سوف تتوضح هذه الفكرة اكثر بعد قليل عندما نبدأ بالعمل على صفحة ال aspx
لان المطلوب منك تصميم الصفحة الأم بالطريقة التي ترغب بها
قم مثلا بعمل جدول يتكون من ثلاث صفوف الصف العلوي للهيدر والصف السفلي للفوتر والصف الي في النص اقسمه الي ثلاث اعمده العامود اليسار للقائمة اليسار والعامود اليمين للقائمة المين وفي العامود الي في المنتصف ضع العنصر contentplaceholder
وطبعا في باقي الصفوف والاعمده سوف نستورد صفحات Web User Control كما في هذا الدرس الذي اشرنا له في اول الموضوع
http://www.swalif.net/softs/showthread.php?t=188255
الان نقوم باضافة صفحة aspx للمشروع ونؤشر على الخيار select master page ونعمل اوك يطلع لنا قائمة نختار منها الصفحة الأم ونقوم باضافة الصفحة ال aspx الجديده كما في الصورة
بعد اضافة الصفحة سوف نلاحظ ان التصميم العام لها بنفس التصميم العام للصفحة الام مع وجود مكان فارغ لاضافة محتويات الصفحة وهو نفس المكان الذي وضعنا به العنصر contentplaceholder في الصفحة الأم
في حالة كنت تريد ازالة الصفحة الأم من صفحة ال aspx او اضافتها لصفحة موجوده فسوف تجد كود استيراد الصفحة الام موجود في اول سطر في سورس الصفحة كما في الصورة
واخيرا اسال الله ان اكون قد وفقت في الشرح واي سؤال اقدر اجاوب عليه ان شاء الله مابقصر
في امان الله وحفظه