使用Panel或PlaceHolder
ASP.NET中的<asp:Panel >
和<asp:PlaceHolder >
什么区别?
你应该什么时候使用一个?
一个面板扩展到一个跨度(或一个div),其中的内容。 一个占位符就是这样,一个占位符被你放入的任何东西取代。
占位符不会为自己提供任何标签,因此对于在没有外部HTML标签开销的情况下对内容进行分组非常有用。
面板有外部的HTML标签,但有一些很酷的额外的属性。
-
BackImageUrl:获取/设置面板的背景图片的URL
-
HorizontalAlign:获取/设置
父级内容的水平alignment - 换行:获取/设置是否
面板的内容包装
在这里 startvbnet有一篇很好的文章。
PlaceHolder控件
使用PlaceHolder控件作为容器来存储dynamic添加到Web页面的服务器控件。 PlaceHolder控件不会产生任何可见的输出,并且仅用作网页上其他控件的容器。 您可以使用Control.Controls
集合来添加,插入或删除PlaceHolder控件中的一个控件。
面板控制
Panel控件是其他控件的容器 。 当您想以编程方式生成控件,隐藏/显示一组控件或本地化一组控件时,此function特别有用。
Direction
属性对于本地化Panel控件的内容来显示从右向左书写的语言(如阿拉伯语或希伯来语)的文本很有用。
Panel控件提供了多个属性,允许您自定义行为并显示其内容。 使用BackImageUr
l属性显示Panel控件的自定义图像。 使用ScrollBars
属性为控件指定滚动条。
呈现HTML时的细微差异:PlaceHolder控件将不呈现任何内容,但Panel控件将呈现为<div>
。
更多信息在ASP.NET论坛
我在Visual Studio 2010怪异的错误*,如果你把控制在一个占位符,它不会呈现在devise视图模式。
“隐藏字幕”和“空白”标签尤其如此。
我很喜欢使用占位符,而不是面板,但我讨厌事实上,我不能在devise时在GUI中的其他控件内的占位符。
正如其他答案中提到的那样,Panel在HTML中生成一个<div>
,而PlaceHolder则不生成。 但是有更多的理由可以select其中的一种。
为什么是一个PlaceHolder?
由于它不生成它自己的标签,因此可以在其他不能包含<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>
,也可以用来包装一组Contol。 但面板有更多的属性可以用来格式化它的内容:
<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>
但最有用的function是DefaultButton
属性。 当ID与面板中的button相匹配时,当在TextBox内按下enter
时,它将触发具有validation的Form Post。 现在用户可以在不按下button的情况下提交表单。
<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>
通过在TextBox1
按下enter
尝试上面的代码片段