【发布时间】:2009-11-25 14:26:39
【问题描述】:
我在运行时向Page Form 对象添加控件。
每个控件都有一个 Id。
在回发时,我希望能够访问这些控件及其值。
目前,当我进行回发时,Form.Controls 集合中的表单没有控件。
我该如何解决这个问题?
这是否只有在每次页面加载时都向页面添加控件时才可能?
【问题讨论】:
标签: c# .net-3.5 forms controls postback
我在运行时向Page Form 对象添加控件。
每个控件都有一个 Id。
在回发时,我希望能够访问这些控件及其值。
目前,当我进行回发时,Form.Controls 集合中的表单没有控件。
我该如何解决这个问题?
这是否只有在每次页面加载时都向页面添加控件时才可能?
【问题讨论】:
标签: c# .net-3.5 forms controls postback
需要在每次页面加载时添加动态添加的控件,否则它们将丢失。
但是,只要始终使用相同的 ID 添加这些控件,就可以保持这些控件的视图状态。
【讨论】:
我相信您必须动态添加控件才能在回发时访问它们。因此,如果您动态添加一个文本框,您的事件处理程序将无法检索其值,除非您再次添加它。
编辑:我使用的一种解决方法是向页面添加一组预定的服务器控件,然后使用 JavaScript 隐藏/显示这些元素。您避免了回发,并且避免了与从动态添加的服务器控件中检索值相关的不必要的愚蠢行为。当然,这会将您限制为预定义数量的控件。
这是我对 ASP.NET Web 表单的一大不满,也是我决定探索 ASP.NET MVC 的一个因素 - 不再有视图状态/回发混乱。
【讨论】: