Answers:
面板会扩展到一个跨度(或一个div),其中包含内容。占位符就是这样,一个占位符将替换为您放置的任何内容。
占位符本身不会呈现任何标签,因此非常适合对内容进行分组,而无需外部HTML标签。
该面板确实具有外部HTML标记,但确实具有一些很酷的额外属性。
BackImageUrl:获取/设置面板的背景图像的URL
HorizontalAlign:获取/设置
父级内容的水平对齐方式
有一个在startvbnet一个很好的文章在这里。
使用PlaceHolder控件作为容器来存储动态添加到Web页的服务器控件。PlaceHolder控件不产生任何可见的输出,仅用作网页上其他控件的容器。您可以使用该Control.Controls
集合在PlaceHolder控件中添加,插入或删除控件。
的面板控制是其他控件的容器。当您要以编程方式生成控件,隐藏/显示一组控件或本地化一组控件时,此功能特别有用。
该Direction
属性对于本地化Panel控件的内容以显示从右向左书写的语言(例如阿拉伯语或希伯来语)的文本很有用。
面板控件提供了几个属性,使您可以自定义行为并显示其内容。使用BackImageUr
l属性显示面板控件的自定义图像。使用ScrollBars
属性指定控件的滚动条。
呈现HTML时的细微差别:PlaceHolder控件将不呈现任何内容,但是Panel控件将呈现为<div>
。
有关更多信息,请访问ASP.NET论坛。
我觉得Visual Studio 2010中的bug *很奇怪,如果将控件放在占位符中,则它不会在设计视图模式下呈现它们。
对于Hidenfields和Empty标签尤其如此。
我希望使用占位符而不是面板,但是我讨厌在设计时无法在GUI中将其他控件放入占位符的事实。
如其他答案中所述,面板会生成<div>
HTML格式的文件,而PlaceHolder不会。但是,还有很多原因让您选择其中之一。
为什么选择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>
也可以用于包装一组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
属性。当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