PanelまたはPlaceHolderの使用


回答:


161

パネルは、そのコンテンツを含むスパン(またはdiv)に展開されます。プレースホルダーはまさにそれであり、あなたがそれに入れたもので置き換えられたプレースホルダーです。


19
パネルがDIVになる
mbillard 2009年

4
ASP.Netのバージョンとレンダリングするブラウザーによっては、スパンになることもあります。
スティーブンロビンス

9
BrowserCapsから始めないでください。「ダウンレベル」ブラウザの.Net 1.1で単一のセルテーブルになることもあります。
Zhaph-Ben Duguid、2009年

6
へえ、私はダウンレベルのテーブルレンダリングを私の心の外に押し出そうとしました。それを元に戻してくれてありがとう:-)
Steven Robbins

1
@Protectorone:上記のコメントはパネルに関するものであり、プレースホルダーではありません。
ブライアン

63

プレースホルダーはそれ自体のタグをレンダリングしないので、外側のHTMLタグのオーバーヘッドなしでコンテンツをグループ化するのに最適です。

パネルには外部HTMLタグがありますが、いくつかの優れた追加プロパティがあります。

  • BackImageUrl:パネルの背景画像のURLを取得または設定します

  • Horizo​​ntalAlign:
    親のコンテンツの水平方向の配置を取得または設定します

  • Wrap:
    パネルのコンテンツが折り返されるかどうかを取得または設定します

こちらの startvbnetに良い記事があります


15
asp:Panelのもう1つの優れた機能は、DefaultButtonプロパティがあり、ユーザーがキーボードでEnterキーを押した場合にクリックするボタンを指示することです。Enterボタンを操作する必要がある複数のパネルとボタンが同じページにある場合に便利です。
アレックスヨーク

1
@Markoカスタムユーザーコントロールの継承に取り組んだ後、同意する
drzaus 2013年

2009年、WebFormsがASP.NET開発を行うための事実上の.NETの方法であったとき、そうです。2012年12月には、ほぼ4年後のことでしょう。奇妙なコメント
Ray Booysen

1
startvbnetリンクが停止しています。
mmcglynn 2013

1
上記の私のコメントと同じ-非常に貴重な詳細を提供してくれてありがとう。これらは、アップグレードしようとしているDNNモジュールの他のソリューションではなく、コードビハインドで使用されている理由を明らかにするのに役立ちました。
user1585204

36

PlaceHolderコントロール

PlaceHolderコントロールをコンテナーとして使用して、Webページに動的に追加されるサーバーコントロールを格納します。PlaceHolderコントロールは目に見える出力を生成せず、Webページ上の他のコントロールのコンテナーとしてのみ使用されます。Control.Controlsコレクションを使用して、PlaceHolderコントロールのコントロールを追加、挿入、または削除できます。

パネル制御

Panelコントロールは、他のコントロールのコンテナです。これは、プログラムでコントロールを生成する、コントロールのグループを非表示/表示する、またはコントロールのグループをローカライズする場合に特に役立ちます。

Directionプロパティは、Panelコントロールのコンテンツをローカライズして、アラビア語やヘブライ語など、右から左に書かれる言語のテキストを表示するのに役立ちます。

Panelコントロールには、その内容の動作と表示をカスタマイズできるいくつかのプロパティがあります。BackImageUrlプロパティを使用して、Panelコントロールのカスタム画像を表示します。使用ScrollBarsプロパティを、コントロールのスクロールバーを指定します。

HTMLをレンダリングするときの小さな違い:PlaceHolderコントロールは何もレンダリングしませんが、Panelコントロールは <div>

ASP.NETフォーラムの詳細情報


1
これは非常に詳細な説明です。これらのタグがどこで使用されたのかを確認する必要がありました。モジュールの開発者(不思議なことに消えてしまった:))は、これらを背後のコードで動的に作成しているだけです。過去7年間ほどJavaScriptのフロントエンドを担当したことがないので、これまで使用したことはありません。素晴らしい入力をありがとう。
user1585204

5

ビジュアルスタジオ2010のバグ*は奇妙です。プレースホルダー内にコントロールを配置すると、デザインビューモードではレンダリングされません。

これは特にHidenfieldsとEmptyラベルに当てはまります。

パネルではなくプレースホルダーを使用したいのですが、GUIのデザイン時にプレースホルダー内に他のコントロールを配置できないのが嫌です。


5
人々はまだデザインビューモードを使用していますか?;)
マシューロック

2
haha-

これが修正されるのをまだ待っています!
Nikki Punjabi 2017年

1

他の回答で述べたように、パネルは <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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.