题
之间的区别是什么 <asp:Panel >
和 <asp:PlaceHolder >
在ASP.NET?
当你应该使用的一个比其他?
解决方案
一个面板扩展到一个跨距(或一个div),与它的内它的内容。占位符就是这样,这是由不管你把它替换的占位符。
其他提示
占位并不呈现任何标本身,因此这是伟大的分组的内容无需的开销外HTML标签。
小组没有外HTML标记,但没有一些很酷的额外性。
BackImageUrl:Gets/Sets的 背景图像的URL小组
HorizontalAlign:Gets/Sets的
水平对准父母的 内容- 总结:Gets/Sets是否
小组的内容包裹
有的是一篇好文章在startvbnet 在这里,.
占位符控制
使用占位符控制作为一个容器,用于存储动态添加到网页服务器控件。占位符控制不会产生任何可见的输出,并仅作为在Web页面上的其他控件的容器。可以使用Control.Controls
集合添加,插入,或删除在占位符控制的控制。
面板控制
的面板控制为其他控件强>的容器。当要以编程生成控制,隐藏/显示一组控件,或定位一组控件它是特别有用的。
在Direction
属性是用于定位面板控制的内容,以显示该从右到左书写语言,如阿拉伯语或希伯来语文本有用的。
小组控制提供几个属性,允许自定义其内容的行为和显示。使用BackImageUr
l属性为Panel控件显示一个自定义图像。使用ScrollBars
属性为控制指定滚动条。
的小差异时HTML:一个占位符控制将呈现什么都没有,但面板控制将呈现为一个<div>
我奇怪的错误*在Visual Studio 2010中,如果你把一个占位符内部控制它不能在设计视图模式使它们。
这是特别真实的用于Hidenfields和空标签。
我喜欢使用占位符代替面板,但我恨我不能把其他控件内占位符在设计时在GUI的事实。
正如在其他的答案中提到,小组生成HTML一个<div>
,而占位符没有。但也有很多原因,你可以选择任何一个。
<强>为什么一个占位符吗
由于它不产生它的标签本身就可以安全地使用其他元素中不能包含<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>
并且还可以用于包装一组Contols的。但一个面板有很多多种性质,可以是格式化它的内容有用:
<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
尝试上面的片段