ASP.NET Master Page (.master) เป็นแนวคิดที่พัฒนาเพิ่มมาจาก Web User Control (.ascx) โดยเริ่มมีกับ ASP.NET 2.0 (Visual Studio 2005) และใน .NET เวอร์ชั่นใหม่ ๆ ๆ การ Create New Project (ASP.NET Web Site) นั้นจะมีการสร้าง Master Page เป็นไฟล์ Default ให้กับโปรเจคในทันที เพราะ Master Page นั้นได้เข้ามาช่วยจัดการเรื่องการออกแบบ layout ของหน้า Web Form ได้อย่างมีประสิทธิภาพ และสะดวกต่อการใช้งานอย่างมากเลยทีเดียว
พื้นฐานในการออกแบบ หน้าเว็บไซต์ หน้านั้น ๆ ตามองค์ประกอบพื้นฐานของหน้า Web Form (.aspx) จะประกอบด้วย 4 ส่วนหลัก ๆ คือ
1. Header หรือส่วนบนของเว็บไซต์
2. Menu หรือส่วนเมนูของเว็บไซต์
3. Footer ส่วนล่างของเว็บไซต์
4. Container หรือส่วนของเนื้อหา
Model ของ Web User Control (.ascx) ในการใช้ Web User Control กับ Web Form จะต้องออกแบบ Web User Control ไฟล์ซึ่งประกอบด้วย Header.ascx , Menu.ascx และ Footer.ascx แล้วทำการสร้างไฟล์ Web Form (.aspx) พร้อม ๆ กับลาก Web User Control (.ascx) ดังกล่าวมาไว้ในตำแหน่งที่ต้องการ ข้อเสียวิธีการนี้คือ ในหน้า Web Form (.aspx) จะต้องทำการจัด Layout ในทุก ๆ ไฟล์ และทำการลาก Web User Control (.ascx) มาใส่ในทุก ๆ ครั้ง ซึ่งจะเป็นปัญหาเมื่อมีการปรับ Layout จะต้องทำให้ตามแก้ไขข้อมูล Web Form ทุก ๆ ไฟล์ การใช้ Web User Control จะมีเหมาะสมในกรณีที่ไม่ต้องการ Layout หรือ Themes ในรูปแบบเดียวกันทั้งเว็บไซต์
รูปตัวอย่างการออกแบบหน้า Web Form ด้วยการใช้ Web User Control เข้ามาจัดการ Header,Menu และ Footer
จากรูปจะเห็นว่า Web Form (.aspx) นี้ถูกสร้างขึ้นมา และมีการจัด Layout เป็น 4 ส่วน โดยมีส่วน Header , Menu และ Footer ได้มีการ include มาจาก Web User Control และในส่วนของ Container จะเป็นส่วนของ Page ที่ใส่เนื้อหาต่าง ๆ และเหตุผลนี้เอง กรณีที่สร้าง Web Form ขึ้นมาอีกหลาย ๆ หน้าก็จะต้องทำในกรณีเช่นเดียวกัน คือ Include หรือลาก Web User Control เช่นเดียวกัน
สำหรับการใช้งาน Web User Control สามารถเพิ่มเติมได้ที่
Master Page (.master)
ได้เข้ามาจัดการแก้ไขปัญหาดังกล่าว โดยการรวมเอา Layout ทั้ง 3 ส่วน มาไว้ในไฟล์เดียวกัน ความแตกต่างระหว่าง Master Page (.master) และ Web User Control (.ascx) ถ้าจะอธิบายให้เข้าใจง่ายก็คือ Web User Control (.ascx) คือการสร้างไฟล์ย่อยหรือไฟล์ include ซึ่งตัวหน้า Web Form (.aspx) หลัก สามารถทำการ include เข้ามาในตำแหน่งที่ต้องการ ส่วน Master Page (.master) จะเป็น Page หลักหรือต้นแบบของหน้าเว็บไซต์ โดยที่หน้า WebPage จะทำการจำลอง Layout ที่ได้ออกแบบไว้ใน Master Page มาแสดงที่หน้า Web Form ปัจจุบัน และในหน้า Web Form จะสามารถใส่เนื้อหาหรือรายละเอียดได้เฉพาะตรงส่วนที่เป็น ContentPlaceHolder ที่ได้ออกแบบไว้ใน Master Page (.master) เท่านั้น ซึ่งการใช้ Master Page (.master) เข้ามาจัดการหน้า Web Form จะช่วยในเรื่องการปรับเปลี่ยน Layout รวมทั้งรายละเอียดอื่น ๆ ได้อย่างสะดวก และง่ายต่อการเขียนโปรแกรม ASP.NET มากเลยทีเดียว
จะเห็นว่า Master Page ไฟล์นี้ได้วางตำแหน่งไว้ 2 ตำแหน่ง สำหรับบรรจุดเนื้อหาของ Web Form (.aspx) และเมื่อมีการสร้าง Web Form โดยมีการสืบทอด Master Page ตัวนี้ ในไฟล์ Web Form ก็จะปรากฏ ContentPlaceHolder1 และ ContentPlaceHolder2 สำหรับใส่เนื้อหาใน Web Page
ลองมาดูตัวอย่างการสร้างแบบง่าย ๆ ครับ
ขั้นตอนที่ 1 สร้างไฟล์ .master
คลิกขวาที่ Project เลือก -> Add -> New Item...
เลือก Control Master Page และตั้งชื่อเป็น MyMasterPage.master
จากตัวอย่างจะเห็นว่าใน Web Form จะต้องไม่ทำการออกแบบ Layout เลย เพราะ Layout หลักนั้นได้ถูกสร้างไว้ที่ Master Page (.master) ซึ่งเราสามารถปรับเปลี่ยนได้อย่างสะดวกและง่ายต่อการเขียนโปรแกรมอย่างยิ่ง และเมื่อกต้องการเพิ่ม Web Form อื่น ๆ ก็ใช้วิธีเดียวกัน