我在运行时向Page Form
对象添加控件。
每个控件都有一个Id。
在回发时,我希望能够访问这些控件及其值。
目前,当我进行回发时,表单在Form.Controls
集合中没有控件。
我该如何纠正这个?
只有在每次加载页面时将控件添加到页面中才能实现这一点吗?
答案 0 :(得分:2)
动态添加的控件需要在每次加载页面时添加,否则它们将丢失。
但是,只要总是添加相同的ID,就可以维护这些控件的视图状态。
答案 1 :(得分:1)
我相信您必须动态添加控件才能在回发时访问它们。因此,如果动态添加文本框,除非再次添加,否则事件处理程序无法检索其值。
编辑:我使用的一种解决方法是向页面添加一组预定的服务器控件,然后使用JavaScript隐藏/显示这些元素。您可以避免回发,并避免与从动态添加的服务器控件中检索值相关联的不必要的tom-foolery。当然,这会将您限制为预定义数量的控件。这是我的一个很大的烦恼,使用ASP.NET Web表单,这是我决定探索ASP.NET MVC的一个因素 - 没有更多的viewstate / postback mess。