回答:
パネルは、そのコンテンツを含むスパン(またはdiv)に展開されます。プレースホルダーはまさにそれであり、あなたがそれに入れたもので置き換えられたプレースホルダーです。
プレースホルダーはそれ自体のタグをレンダリングしないので、外側のHTMLタグのオーバーヘッドなしでコンテンツをグループ化するのに最適です。
パネルには外部HTMLタグがありますが、いくつかの優れた追加プロパティがあります。
BackImageUrl:パネルの背景画像のURLを取得または設定します
HorizontalAlign:
親のコンテンツの水平方向の配置を取得または設定します
PlaceHolderコントロールをコンテナーとして使用して、Webページに動的に追加されるサーバーコントロールを格納します。PlaceHolderコントロールは目に見える出力を生成せず、Webページ上の他のコントロールのコンテナーとしてのみ使用されます。Control.Controls
コレクションを使用して、PlaceHolderコントロールのコントロールを追加、挿入、または削除できます。
Panelコントロールは、他のコントロールのコンテナです。これは、プログラムでコントロールを生成する、コントロールのグループを非表示/表示する、またはコントロールのグループをローカライズする場合に特に役立ちます。
の Direction
プロパティは、Panelコントロールのコンテンツをローカライズして、アラビア語やヘブライ語など、右から左に書かれる言語のテキストを表示するのに役立ちます。
Panelコントロールには、その内容の動作と表示をカスタマイズできるいくつかのプロパティがあります。BackImageUr
lプロパティを使用して、Panelコントロールのカスタム画像を表示します。使用ScrollBars
プロパティを、コントロールのスクロールバーを指定します。
HTMLをレンダリングするときの小さな違い:PlaceHolderコントロールは何もレンダリングしませんが、Panelコントロールは <div>
。
ASP.NETフォーラムの詳細情報
ビジュアルスタジオ2010のバグ*は奇妙です。プレースホルダー内にコントロールを配置すると、デザインビューモードではレンダリングされません。
これは特にHidenfieldsとEmptyラベルに当てはまります。
パネルではなくプレースホルダーを使用したいのですが、GUIのデザイン時にプレースホルダー内に他のコントロールを配置できないのが嫌です。
他の回答で述べたように、パネルは <div>
、PlaceHolderはHTMLでしませんがはHTMLでします。しかし、どちらかを選択できる理由は他にもたくさんあります。
なぜPlaceHolderなのか?
独自のタグを生成しないので<div>
、を含むことができない他の要素内で安全に使用できます。次に例を示します。
<table>
<tr>
<td>Row 1</td>
</tr>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</table>
PlaceHolderを使用して、コントロールのグループをVisibilityでラップせずに制御することもできます。 <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>
を生成し、コントロールのグループをラップするために使用することもできます。ただし、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
、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