我发现这篇文章是关于如何操纵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>
在没有tr
和td
的情况下渲染控件。
我怎么处理这个?我想要的只是改变占位符的顺序,如本例phOneToMove
。
注意:我在asp.net 2.0上运行。
答案 0 :(得分:0)
HTML标记存储为tyep Literal或LiteralControl的控件,因此,elogic的工作必须检查该类型的控件以确保它们也能到达目的地。
答案 1 :(得分:0)
我找到了解决方案。我的问题是,文字html元素(不是LiteralControls)不在我的usercontrol的Controls属性中。我不知道为什么。所以我开始调试.net Framework代码本身并设置一个没有开销的项目。
简短:我在ascx文件中有代码,如<b><%= myOutputVariable %></b>
。这会导致asp不将文件的文字内容放入控件集合中。删除此代码后,它就像预期的那样工作。