답변:
패널은 내용이 포함 된 범위 (또는 div)로 확장됩니다. 자리 표시자는 바로 그 자리 표시 자입니다. 자리 표시자는 자리 표시 자로 대체됩니다.
자리 표시자는 자체적으로 태그를 렌더링하지 않으므로 외부 HTML 태그의 오버 헤드없이 콘텐츠를 그룹화하는 데 좋습니다.
패널에는 외부 HTML 태그가 있지만 멋진 추가 속성이 있습니다.
BackImageUrl : 패널의 배경 이미지 URL을 가져 오거나 설정합니다
HorizontalAlign :
부모 내용 의 가로 정렬을 가져 오거나 설정합니다
startvbnet에 좋은 기사가 있습니다 .
PlaceHolder 컨트롤을 컨테이너로 사용하여 웹 페이지에 동적으로 추가되는 서버 컨트롤을 저장합니다. PlaceHolder 컨트롤은 가시적 인 출력을 생성하지 않으며 웹 페이지의 다른 컨트롤에 대한 컨테이너로만 사용됩니다. Control.Controls
컬렉션을 사용 하여 PlaceHolder 컨트롤에서 컨트롤을 추가, 삽입 또는 제거 할 수 있습니다 .
패널 컨트롤은 다른 컨트롤의 컨테이너입니다 . 프로그래밍 방식으로 컨트롤을 생성하거나, 컨트롤 그룹을 숨기거나 표시하거나, 컨트롤 그룹을 현지화 할 때 특히 유용합니다.
이 Direction
속성은 아랍어 또는 히브리어와 같이 오른쪽에서 왼쪽으로 쓰는 언어의 텍스트를 표시하도록 패널 컨트롤의 내용을 현지화하는 데 유용합니다.
Panel 컨트롤은 내용의 동작과 표시를 사용자 지정할 수있는 몇 가지 속성을 제공합니다. BackImageUr
l 속성을 사용하여 Panel 컨트롤에 대한 사용자 지정 이미지를 표시하십시오. 이 ScrollBars
속성을 사용하여 컨트롤의 스크롤 막대를 지정 하십시오 .
HTML 렌더링시 작은 차이 : PlaceHolder 컨트롤은 아무것도 렌더링하지 않지만 Panel 컨트롤은으로 렌더링합니다 <div>
.
ASP.NET 포럼 에서 추가 정보
Visual Studio 2010에서 이상한 버그 *, 자리 표시 자 안에 컨트롤을 넣으면 디자인 뷰 모드에서 렌더링되지 않습니다.
이것은 Hidenfields 및 Empty 레이블에 특히 해당됩니다.
패널 대신 자리 표시자를 사용하고 싶지만 GUI에서 디자인 타임에 자리 표시 자 안에 다른 컨트롤을 넣을 수 없다는 사실이 싫습니다.
다른 답변에서 언급했듯이 Panel <div>
은 HTML로 생성 하지만 PlaceHolder는 생성 하지 않습니다. 그러나 둘 중 하나를 선택할 수있는 더 많은 이유가 있습니다.
왜 PlaceHolder인가?
자체 태그를 생성하지 않으므로을 포함 할 수없는 다른 요소 내에서 안전하게 사용할 수 있습니다 ( <div>
예 :
<table>
<tr>
<td>Row 1</td>
</tr>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>
PlaceHolder를 사용하여 컨트롤 그룹을 래핑하지 않고 컨트롤 그룹의 가시성을 제어 할 수도 있습니다. <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>
왜 패널
자체 생성 <div>
되며 Contols 그룹을 감싸는 데 사용할 수도 있습니다. 그러나 패널에는 내용의 형식을 지정하는 데 유용한 훨씬 더 많은 속성이 있습니다.
<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
하면 TextBox 내부에서을 누르면 유효성 검사와 함께 양식 게시물이 트리거됩니다 . 이제 사용자는 버튼을 누르지 않고도 양식을 제출할 수 있습니다.
<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