<asp:Panel >
和<asp:PlaceHolder >
ASP.NET有什么区别?
什么时候应该使用其中一种?
面板扩展为跨度(或 div),其中包含内容。占位符就是这样,一个占位符,它被您放入其中的任何内容所取代。
占位符不会为自己呈现任何标签,因此非常适合对内容进行分组,而不会产生外部 HTML 标签的开销。
Panel 确实有外部 HTML 标签,但也有一些很酷的额外属性。
BackImageUrl:获取/设置面板的背景图像的 URL
HorizontalAlign:获取/设置
父内容的水平对齐方式
startvbnet这里有一篇很好的文章。
使用 PlaceHolder 控件作为容器来存储动态添加到网页的服务器控件。PlaceHolder 控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用该Control.Controls
集合在 PlaceHolder 控件中添加、插入或删除控件。
Panel 控件是其他控件的容器。当您想要以编程方式生成控件、隐藏/显示一组控件或本地化一组控件时,它特别有用。
该Direction
属性可用于本地化 Panel 控件的内容以显示从右到左书写的语言的文本,例如阿拉伯语或希伯来语。
Panel 控件提供了几个属性,允许您自定义其内容的行为和显示。使用BackImageUr
l 属性显示 Panel 控件的自定义图像。使用该ScrollBars
属性为控件指定滚动条。
呈现 HTML 时的细微差别:PlaceHolder 控件将不呈现任何内容,但 Panel 控件将呈现为<div>
.
更多信息,请访问ASP.NET 论坛
我在 Visual Studio 2010 中出现了奇怪的错误*,如果您将控件放在占位符内,它不会在设计视图模式下呈现它们。
对于隐藏字段和空标签尤其如此。
我很想使用占位符而不是面板,但我讨厌在 GUI 的设计时不能将其他控件放在占位符中的事实。
正如其他答案中提到的,Panel 会生成<div>
HTML,而 PlaceHolder 不会。但是,您可以选择其中任何一个的原因还有很多。
为什么是占位符?
由于它不会生成自己的标签,因此您可以在其他不能包含 a 的元素中安全地使用它<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。但是 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
属性。enter
当 ID 与 Panel 中的 Button 匹配时,它会在 TextBox 内按下时触发带有验证的 Form Post 。现在用户可以在不按按钮的情况下提交表单。
<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