之间的区别是什么 <asp:Panel ><asp:PlaceHolder > 在ASP.NET?

当你应该使用的一个比其他?

有帮助吗?

解决方案

一个面板扩展到一个跨距(或一个div),与它的内它的内容。占位符就是这样,这是由不管你把它替换的占位符。

其他提示

占位并不呈现任何标本身,因此这是伟大的分组的内容无需的开销外HTML标签。

小组没有外HTML标记,但没有一些很酷的额外性。

  • BackImageUrl:Gets/Sets的 背景图像的URL小组

  • HorizontalAlign:Gets/Sets的
    水平对准父母的 内容

  • 总结:Gets/Sets是否
    小组的内容包裹

有的是一篇好文章在startvbnet 在这里,.

占位符控制

使用占位符控制作为一个容器,用于存储动态添加到网页服务器控件。占位符控制不会产生任何可见的输出,并仅作为在Web页面上的其他控件的容器。可以使用Control.Controls集合添加,插入,或删除在占位符控制的控制。

面板控制

面板控制为其他控件的容器。当要以编程生成控制,隐藏/显示一组控件,或定位一组控件它是特别有用的。

Direction属性是用于定位面板控制的内容,以显示该从右到左书写语言,如阿拉伯语或希伯来语文本有用的。

小组控制提供几个属性,允许自定义其内容的行为和显示。使用BackImageUrl属性为Panel控件显示一个自定义图像。使用ScrollBars属性为控制指定滚动条。

渲染

的小差异时HTML:一个占位符控制将呈现什么都没有,但面板控制将呈现为一个<div>

ASP.NET论坛的更多信息

我奇怪的错误*在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尝试上面的片段

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top