C# 更改控件的呈现顺序
我找到了这篇关于如何操作asp.net控件的呈现序列的文章: 我在页面上放置了一些占位符来封装我想要移动的控件。问题是,RenderChildren在没有将html放入占位符的情况下呈现控件,如下所示:C# 更改控件的呈现顺序,c#,asp.net,asp.net-2.0,C#,Asp.net,Asp.net 2.0,我找到了这篇关于如何操作asp.net控件的呈现序列的文章: 我在页面上放置了一些占位符来封装我想要移动的控件。问题是,RenderChildren在没有将html放入占位符的情况下呈现控件,如下所示: <asp:PlaceHolder id="phOneToMove" Runat="server" Visible="true"> <tr> <td><asp:Literal id="label1" Runat="server">Caption<
<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上运行。HTML标记存储为tyep Literal或LiteralControl的控件,因此,TheLogic works必须检查该类型的控件,以确保它们也到达目的地。我找到了解决方案。我的问题是,不是LiteralControls的LiteralHTML元素不在我的usercontrol的Controls属性中。我不知道为什么。因此,我开始调试.net Framework代码本身,并在没有开销的情况下设置一个项目
简短:我在ascx文件中有类似的代码。这会导致asp不会将文件的文字内容放入控件集合中。删除此代码后,其工作方式与预期一致。显示渲染方法。ASP.NET将etc转换为标签控件。如果你只渲染你明确知道的控件,你会错过这些tr/td。不,如果我使用blogpost中的例子,它甚至不起作用:private void RenderReverseHtmlTextWriter writer{for int I=controls.Count-1;I>=0;I-{controls[I].RenderControlwriter;}},那么不起作用的结果是什么?对不起,我弄错了。不呈现控件的所有直接子控件之外的HTML标记。只要我把它们放进一个占位符,它就会工作。html代码不也显示为childcontrols吗?。我没有代码在渲染过程中跳过任何控件。