我的页面上有一些asp.NET
表单内容,包括下拉列表和日历。
我遇到了 NULL 的问题,所以我尝试在构造函数中放入一个断点。它在页面首次加载之前停在断点处。然后我走过去,页面加载了。然后我在日历中选择了一个日期,它在我的断点处停止了。
我没有使用任何选择的日期事件。实际上,我的页面仅在单击按钮时使用该事件。但不知何故,看起来我的构造函数在所有事件中都被调用。
这是真的吗?这怎么可能是真的? 是否在每个事件触发时创建了一个全新的页面实例?
答案 0 :(得分:13)
是的,为所有回发创建页面的新实例是正常的。只要用户的会话持续存在,即使服务器无法知道用户是否仍然在查看页面,另一种方法是保持服务器端对象的存在。由于这是不合需要的,因此需要一种替代方法:在每个请求之间销毁和重新创建页面。
某些控件(包括确实是日历控件)将自动导致回发,以便(例如)显示用户选择不同月份后的月份的正确日期。其他控件不会导致此类回发,因为它们根本不需要新的服务器生成的信息,或者因为它们使用其他方法来联系服务器。控件的文档应该告诉您,以及如何(如果有的话)可以控制行为。