ความแตกต่างระหว่าง<asp:Panel >
และ<asp:PlaceHolder >
ใน ASP.NET คืออะไร?
เมื่อใดที่คุณควรใช้อีกอันหนึ่ง?
ความแตกต่างระหว่าง<asp:Panel >
และ<asp:PlaceHolder >
ใน ASP.NET คืออะไร?
เมื่อใดที่คุณควรใช้อีกอันหนึ่ง?
คำตอบ:
พาเนลขยายเป็นขยาย (หรือ div) โดยมีเนื้อหาอยู่ภายใน ตัวยึดตำแหน่งเป็นเพียงตัวยึดตำแหน่งที่แทนที่ด้วยสิ่งที่คุณใส่ไว้
ตัวยึดตำแหน่งไม่แสดงแท็กใด ๆ สำหรับตัวเองดังนั้นจึงเหมาะสำหรับการจัดกลุ่มเนื้อหาโดยไม่มีค่าใช้จ่ายของแท็ก HTML ด้านนอก
แผงควบคุมมีแท็ก HTML ด้านนอก แต่มีคุณสมบัติพิเศษที่ยอดเยี่ยม
BackImageUrl: รับ / กำหนด URL ของภาพพื้นหลังสำหรับพาเนล
HorizontalAlign: รับ / ตั้งค่าการ
จัดตำแหน่งแนวนอนของเนื้อหาของพาเรนต์
ใช้ตัวควบคุม PlaceHolder เป็นคอนเทนเนอร์เพื่อจัดเก็บการควบคุมเซิร์ฟเวอร์ที่เพิ่มไว้ในเว็บเพจแบบไดนามิก ตัวควบคุม PlaceHolder จะไม่สร้างเอาต์พุตใด ๆ ที่มองเห็นได้และใช้เป็นภาชนะสำหรับการควบคุมอื่น ๆ บนเว็บเพจเท่านั้น คุณสามารถใช้Control.Controls
คอลเลกชันเพื่อเพิ่มแทรกหรือลบตัวควบคุมในตัวควบคุม PlaceHolder
แผงควบคุมเป็นภาชนะสำหรับการควบคุมอื่น ๆ มันมีประโยชน์อย่างยิ่งเมื่อคุณต้องการสร้างการควบคุมโดยทางโปรแกรมซ่อน / แสดงกลุ่มการควบคุมหรือ จำกัด กลุ่มของการควบคุม
Direction
คุณสมบัติเป็นประโยชน์สำหรับการแปลเนื้อหาแผงควบคุมเพื่อแสดงข้อความสำหรับภาษาที่เขียนจากขวาไปซ้ายเช่นภาษาอาหรับหรือภาษาฮิบรู
คอนโทรลพาเนลจัดเตรียมคุณสมบัติหลายอย่างที่อนุญาตให้คุณกำหนดลักษณะการทำงานและแสดงเนื้อหาของมันเอง ใช้BackImageUr
คุณสมบัติ l เพื่อแสดงอิมเมจที่กำหนดเองสำหรับคอนโทรลพาเนล ใช้ScrollBars
คุณสมบัติเพื่อระบุแถบเลื่อนสำหรับตัวควบคุม
ความแตกต่างเล็กน้อยเมื่อแสดง HTML: ตัวควบคุม PlaceHolder จะไม่แสดงผลใด<div>
ๆ
ข้อมูลเพิ่มเติมได้ที่ฟอรัม ASP.NET
ฉันผิดพลาด * ใน Visual Studio 2010 หากคุณวางตัวควบคุมไว้ในพื้นที่ที่สำรองไว้มันจะไม่แสดงผลในโหมดมุมมองออกแบบ
สิ่งนี้เป็นจริงสำหรับ Hidenfields และป้ายกำกับว่างเปล่า
ฉันชอบที่จะใช้ตัวยึดตำแหน่งแทนการติดตั้ง แต่ฉันเกลียดความจริงที่ว่าฉันไม่สามารถวางการควบคุมอื่น ๆ ไว้ในตัวยึดตำแหน่งในเวลาออกแบบใน GUI
ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ พาเนลจะสร้างเป็น<div>
HTML ในขณะที่ตัวยึดตำแหน่งไม่ได้ แต่มีเหตุผลมากมายที่คุณสามารถเลือกได้
ทำไมถึงต้องเป็นผู้วาง
เนื่องจากมันไม่มีแท็กของตัวเองคุณจึงสามารถใช้มันอย่างปลอดภัยภายในองค์ประกอบอื่น ๆ ที่ไม่สามารถมี<div>
ตัวอย่างเช่น:
<table>
<tr>
<td>Row 1</td>
</tr>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>
นอกจากนี้คุณยังสามารถใช้ตัวยึดเพื่อควบคุมการมองเห็นของกลุ่มการควบคุมโดยไม่ต้องหุ้มมันใน <div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:PlaceHolder>
ทำไมต้องเป็น Panel
มันสร้างเป็นของตัวเอง<div>
และยังสามารถใช้เพื่อห่อกลุ่ม Contols แต่ Panel มีคุณสมบัติมากมายที่สามารถเป็นประโยชน์ในการจัดรูปแบบเนื้อหา:
<asp:Panel ID="Panel1" runat="server" Font-Bold="true"
BackColor="Green" ForeColor="Red" Width="200"
Height="200" BorderColor="Black" BorderStyle="Dotted">
Red text on a green background with a black dotted border.
</asp:Panel>
แต่คุณสมบัติที่มีประโยชน์ที่สุดคือDefaultButton
คุณสมบัติ เมื่อ ID ตรงกับปุ่มในแผงควบคุมมันจะทริกเกอร์แบบฟอร์มโพสต์ด้วยการตรวจสอบเมื่อenter
กดภายในกล่องข้อความ ตอนนี้ผู้ใช้สามารถส่งแบบฟอร์มโดยไม่ต้องกดปุ่ม
<asp:Panel ID="Panel1" runat="server" DefaultButton="Button1">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="Input is required" ValidationGroup="myValGroup"
Display="Dynamic" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="myValGroup" />
</asp:Panel>
ลองตัวอย่างด้านบนโดยกดenter
ด้านในTextBox1