Asp:Panel v Asp:PlaceHolder

I always get the feeling that there is not much difference between the asp:panel and asp:placeholder server controls in ASP.NET. The Panel control is useful for grouping together other controls or HTML segments. The control can be thought of as the server side equivalent of the <div> tag. The PlaceHolder control can also be used for the same purpose, but there is no HTML output for the control itself.

Now, let's consider the following code:

<asp:Panel BackColor="#FF0000" Height="50" 
Width="200" ID="panel1" runat="server">
hello world
</asp:Panel>

When, it's run in the browser, the following HTML is generated

<div id="panel1" 
style="background-color:Red;height:50px;width:200px;">
hello world
</div>

and visually:

hello world

But, when we look at the ASPX file in Dreamweaver MX, we don't see the correct visual representation. Furthermore, we are unable to edit the HTML inside of the asp:panel tag. This can be a bit irritating for developers. To understand why this happens, we need to look at the way that Dreamweaver MX renders ASP.NET server controls. Under the hood, there is a Translation class that talks to the file MM.ASPNetDesignerMgr.dll. The return from the class is the actual HTML that would be generated from an ASPX page. This HTML is then shown in the design view in MX. In other words, the control is treated as a single unit. This kind of translation is very useful for the datagrid, datalist and other similar controls. But, for the asp:panel, it is effectively rendered useless.

Next, we can consider the code for an asp:placeholder:

<asp:PlaceHolder 
 ID="holder1" runat="server">
hello world
</asp:PlaceHolder>

When we view this code in the design view of MX, we are able to edit the HTML within the tag. This is because the tag is not sent to the ASP.NET designer and is rendered normally in MX.

So, this outlines the relative merits of using the Panel and PlaceHolder server controls in ASP.NET. Personally, I always use the PlaceHolder. Mainly because I'm able to edit the HTML inside the tag. Maybe MM should allow developers to edit the HTML within the Panel too. I'm not sure to be honest. Maybe they have sound reasons for leaving it as it is.

Update: There is now an extension on the Macromedia Exchange to make the ASP:panel tag editable. Click here for more info.

AddThis Social Bookmark Button

Related Links

Extensions About me Articles Downloads Portfolio

Products

Charon Cart 3 Extension Charon Cart.NET v2 Multi-lingual Application Charon Cart 2 Extension