نمایش پست تنها
  #2  
قدیمی 10-10-2009
GolBarg GolBarg آنلاین نیست.
مدیر روانشناسی

 
تاریخ عضویت: Sep 2007
نوشته ها: 2,834
سپاسها: : 1,221

2,009 سپاس در 660 نوشته ایشان در یکماه اخیر
پیش فرض

لايه نمايش و رابط بصري در ASP.NET 2.0

نمونه‌سازي از صفحات و Master Page
دومين تغيير مهم در ASP.NET 2.0 نسبت به نسخه قبل، ورود مدل جديدي به فرآيند ساخت صفحات به نام Master Page است. تمام طراحان وب، چه تازه‌كاران و چه كهنه‌كارها همواره با اين مسئله روبه‌رو بوده‌اند كه موضوع تغييرات و اصلاحات صفحات وب يك سايت بزرگ را چگونه ساده كنند. تصور كنيد يك سايت از سي صفحه وب به وجود آمده باشد كه از حال و هوا و صفحه‌آرايي مشابهي پيروي مي‌كنند.

اگر يك روز بخواهيم تغيير كوچكي در ظاهر اين سايت به وجود بياوريم، مثلاً محل لوگوي سايت را از بالا و وسط صفحات به گوشه سمت راست بالاي صفحات جابه‌جا كنيم، همين كار ساده ممكن است ساعت‌ها وقت طراح را بگيرد؛ زيرا بايد اين كار را به صورت دستي سي‌بار تكرار كند. براي حل اين مشكل، از سال‌ها پيش راه‌حل‌هاي گوناگوني مطرح شده است. اگر اين سايت فقط از صفحات استاتيك تشكيل شده باشد، يك سري راه‌حل خاص و در صورتي كه از صفحات دايناميك ساخته شده باشد، يك سري راه حل ديگر پيشنهاد شده است.

مثلاً در حالت استاتيك، بعضي طراحان از تابع document.write در جاوااسكريپت براي ضميمه كردن سورس HTML قسمتي از صفحه در اين مثال، بالاي صفحه در تمام صفحات استفاده مي‌كنند و براي تغيير مورد نظر فقط فايل جاوااسكريپت را تغيير مي‌دهند. ولي اين راه مشكلات خاص خود را دارد كه مهم‌ترين آن، عدم امكان مشاهده سورس HTML در حالت اصطلاحاً Design يا WYSIWYG پس از تبديل آن به كد جاوا اسكريپت است و طراح بايد براي هرگونه تغيير در فرم و قيافه اين قسمت از تخيل خود كمك بگيرد.

بعضي از طراحان ديگر به قابليت Template سازي كه در برخي نرم‌افزارهاي طراحي وب مانند Dreamweaver گنجانيده شده است روي مي‌آورند. اين راه حل نسبتاً خوبي است، ولي چون استاندارد نيست، فقط همان نرم‌افزار زبان اين <عمليات Templateسازي> را مي‌فهمد و وقتي كل پروژه را از داخل نرم‌افزار ديگري مانند ويژوال استوديو باز مي‌كنيد، ديگر كارايي خود را از دست مي‌دهد.

در حالت دايناميك، دست طراح تا حدودي بازتر است. در دوران ASP طراحان از Server-side inculdes براي اين منظور استفاده مي‌كردند. به اين ترتيب كه بخش‌هايي از يك Layout مانند بالا (Header) و پايين (Footer) صفحات كه فرمي مشابه داشت را داخل صفحات ASP مستقلي مي‌گذاشتند و آن‌ها را ضميمه هر صفحه مي‌كردند. درASP.NET اين راه‌حل با بهره گيري از Web User Controls توسعه داده شده است.

بنابراين مي‌توانيد هرجايي از صفحه را كه احساس مي‌كنيد ممكن است بعداً احتياج به تغيير سراسري داشته باشد، به داخل يك فايل ascx منتقل مي‌كنيد و اين قسمت‌ها را ضميمه تمام صفحات مي‌كنيد تا بعداً اگر نياز به تغييري در آن قسمت بود، فقط با اصلاح يك فايل، كل صفحات تغييرات جديد را منعكس كنند.

اما امروزه معلوم شده است كه اين روش نيز محدوديت‌هاي خاصي دارد. اشكال اصلي در اين راه حل اين است كه اگر بخواهيد به عنوان مثال محل قرار گرفتن محتواي يك فايل ascx در صفحات را چند پيكسل جابه‌جا كنيد، باز هم مجبوريد تمام نمونه صفحات يك سايت (مثلاً همان سي صفحه مثال ما) را تغيير دهيد؛ زيرا اين تغيير چيزي را در محتواي صفحه ascx عوض نمي‌كند، بلكه محل و نحوه استقرار كل آن را در يك الگوي اصلي تغيير مي‌دهد.
اگر مي‌شد راه حل معكوسي پيدا كرد كه در آن به جاي اين‌كه عناصر يك صفحه (فايل‌هاي ascx) منحصر به فرد و صفحات دربرگيرنده آن‌ها (فايل‌هاي aspx) متعدد باشند، عناصر صفحه متعدد و الگوي صفحه دربرگيرنده آن‌ها منحصر به فرد بود؛ آن‌گاه اين مشكل حل مي‌شد.

مدل Master Page پاسخي به همين نياز است. شما در ASP.NET 2.0 نه تنها مي‌توانيد همچنان از Web User Controlها استفاده كنيد، بلكه راه حل معكوس آن، يعني Master Page نيز اضافه شده است. در حقيقت مدلMaster Page يك پياده‌سازي دايناميك از همان راه حل الگوسازي است كه در نرم‌افزاري مثل ‌Dreamweaver براي ساخت صفحات استاتيك مشاهده مي‌كنيد.

در اين روش ابتدا يك صفحه الگو (Master Page) مي‌سازيد. سپس هنگام ساختن هر صفحه خاص از سايت، در ابتداي كد صفحه به موتور ASP.NET 2.0 مي‌گوييد كه الگو ياMaster Page اين صفحه كدام صفحه است. در مرحله بعد داخل همين صفحه خاص به سيستم مي‌گوييد كه عناصر داخل الگوي اصلي را چگونه پر كند. صفحه Master Page چيز عجيبي نيست، بلكه خودش يك صفحه وب دايناميك معمولي است كه توسط كد خاصي آن را به عنوان Master Page معرفي مي‌كنيد.

تنها ويژگي اين صفحات آن است كه داخل آن‌ها با استفاده از Tagهاي مخصوصي به سيستم مي‌گوييد فلان قسمت محل نمايش فلان آبجكت است و فلان قسمت ديگر محل نمايش آبجكت ديگر. وقتي موتور ASP.NET ‌شروع به Render كردن يا توليد صفحه وب نهايي مي‌كند، ابتدا الگوي ‌Master Page را با آبجكت‌هاي داخل يك صفحه خاص جمع مي‌زند. شكل 9 قسمتي از يك ‌Master Page را نشان مي‌دهد. قسمت پررنگ شده محل نمايش يك آبجكت را نشان مي‌دهد. شكل 10 نمونه‌اي از يك صفحه ساده است كه ابتدا مرجع، يعني ‌Master Page مربوطه، و سپس محتواي آبجكت مورد نظر را در خود دارد. وقتي اين صفحه توليد مي‌شود، به جاي قسمت پررنگ شده در Master Page محتواي آبجكتي كه ContentPlaceHolder1 ناميده مي‌شود، به نمايش درخواهد آمد.

ويژگي‌هاي راهكار ‌Master Page به دليل شباهتش به مدل الگوسازي در صفحات استاتيك به گونه‌اي است كه باعث مي‌شود طراحان وب حتي براي ساختن سايت‌هايي كه تاكنون به روش استاتيك ساخته مي‌شدند، تجديد نظر كنند و به فكر استفاده از ASP.NET 2.0 بيفتند.





__________________


ویرایش توسط GolBarg : 10-10-2009 در ساعت 11:02 PM
پاسخ با نقل قول
جای تبلیغات شما اینجا خالیست با ما تماس بگیرید