更改控件的呈现顺序

时间:2010-03-02 15:25:48

标签: c# asp.net asp.net-2.0

我发现这篇文章是关于如何操纵asp.net控件的渲染序列。http://weblogs.asp.net/infinitiesloop/archive/2007/09/07/rendering-asp-net-controls-out-of-order.aspx 我在页面上放置了一些占位符来封装我想要移动的控件。问题是,RenderChildren确实渲染控件而没有将html放入占位符中,如下所示:

<asp:PlaceHolder id="phOneToMove" Runat="server" Visible="true">
<tr>
<td><asp:Literal id="label1" Runat="server">Caption</asp:Literal></td>
<td>
<asp:TextBox ID="textbox1" runat="server"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="validator1" Enabled="true" ControlToValidate="textbox1" runat="server" EnableClientScript="False" ErrorMessage="error"></asp:RequiredFieldValidator>
</td>
</tr>
</asp:PlaceHolder>

在没有trtd的情况下渲染控件。 我怎么处理这个?我想要的只是改变占位符的顺序,如本例phOneToMove

注意:我在asp.net 2.0上运行。

2 个答案:

答案 0 :(得分:0)

HTML标记存储为tyep Literal或LiteralControl的控件,因此,elogic的工作必须检查该类型的控件以确保它们也能到达目的地。

答案 1 :(得分:0)

我找到了解决方案。我的问题是,文字html元素(不是LiteralControls)不在我的usercontrol的Controls属性中。我不知道为什么。所以我开始调试.net Framework代码本身并设置一个没有开销的项目。

简短:我在ascx文件中有代码,如<b><%= myOutputVariable %></b>。这会导致asp不将文件的文字内容放入控件集合中。删除此代码后,它就像预期的那样工作。