防止在复合控制中清除子控件

时间:2013-09-16 20:16:05

标签: c# asp.net viewstate servercontrols composite-controls

我有一个自定义服务器控件,标记看起来像这样:

<myLib:MyControl id="myid" runat="server">
    <controls>
        <asp:Textbox id="TxtTest" runat="server" />
        <asp:Button id="cmdTest" runat="server" />
    </controls>
</myLib:MyControl>

controls属性如下所示:

[PersistenceMode(PersistenceMode.InnerProperty)]
public List<Control> controls { get; set; }

由于我不完全理解的原因,如果我通过单击cmdTest触发回发,则会在按钮单击的事件处理程序中删除txtTest的值。有没有人对这可能发生的地方有任何想法?感谢

1 个答案:

答案 0 :(得分:0)

对于任何可能在将来偶然发现这种情况的人来说,我遇到的问题只出现在文本框和其他输入上,而这些输入的值可能会在驻留在客户端的页面中发生变化。问题是(由于设计不必要的复杂),我在页面加载后将一些子控件移动到文档的主体。这导致它们在提交时不会驻留在表单中,并且值不会被持久化。