문제

차이점은 무엇입니까? <asp:Panel > 그리고 <asp:PlaceHolder > asp.net에서?

언제 다른 하나를 사용해야합니까?

도움이 되었습니까?

해결책

패널은 내용 내에있는 스팬 (또는 div)으로 확장됩니다. 자리 표시자는 단지 당신이 넣은 모든 것으로 대체되는 자리 표시 자입니다.

다른 팁

자리 표시자는 자체적으로 태그를 렌더링하지 않으므로 외부 HTML 태그의 오버 헤드없이 콘텐츠를 그룹화하는 데 적합합니다.

패널에는 외부 HTML 태그가 있지만 멋진 추가 특성이 있습니다.

  • BackImageUrl : 패널의 배경 이미지의 URL을 가져 오기/설정합니다.

  • Horizontalalign : get/set
    부모의 내용물의 수평 정렬

  • 랩 :
    패널의 콘텐츠 랩

startVBnet에는 좋은 기사가 있습니다 여기.

자리 표시 자 제어

자리 표시 자 제어를 컨테이너로 사용하여 웹 페이지에 동적으로 추가되는 서버 컨트롤을 저장하십시오. 자리 표시 자 제어는 가시 출력을 생성하지 않으며 웹 페이지의 다른 컨트롤을위한 컨테이너로만 사용됩니다. 당신은 사용할 수 있습니다 Control.Controls 자리 표시 자 제어에서 컨트롤을 추가, 삽입 또는 제거 할 수있는 수집.

패널 제어

그만큼 패널 제어는 다른 컨트롤을위한 컨테이너입니다. 프로그래밍 방식으로 컨트롤을 생성하고, 컨트롤 그룹을 숨기거나 표시하거나, 컨트롤 그룹을 로컬 화하려면 특히 유용합니다.

그만큼 Direction 속성은 아랍어 또는 히브리어와 같이 오른쪽에서 왼쪽으로 쓰여진 언어에 대한 텍스트를 표시하기 위해 패널 컨트롤의 컨트롤을 현지화하는 데 유용합니다.

패널 컨트롤은 해당 내용의 동작 및 표시를 사용자 정의 할 수있는 몇 가지 속성을 제공합니다. 사용 BackImageUrl 속성 패널 컨트롤을위한 사용자 정의 이미지를 표시하는 속성. 사용 ScrollBars 제어 용 스크롤 막대를 지정하는 속성.

HTML을 렌더링 할 때의 작은 차이 : 자리 표시 자 제어는 아무것도 렌더링하지 않지만 패널 제어는 <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>

왜 패널

그것은 자체적으로 생성됩니다 <div> 또한 콘톨의 그룹을 감싸는 데 사용될 수 있습니다. 그러나 패널에는 콘텐츠를 형식화하는 데 유용 할 수있는 훨씬 더 많은 속성이 있습니다.

<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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top