asp.NET是否在每个被触发的事件中调用类'构造函数后面的代码?

Kit*_*lda 7 c# asp.net webforms

我的页面上有一些asp.NET表单,包括下拉列表和日历.我遇到的问题是NULL,所以我尝试在构造函数中放入一个断点.它在页面首次加载之前停在断点处.然后我走过去,页面加载了.然后我在日历中选择了一个日期,它在我的断点处停了下来.我没有使用任何选择的日期事件.实际上,我的页面仅在单击按钮时使用该事件.但不知何故,看起来我的构造函数在所有事件中都被调用.

这是真的?这怎么可能是真的?是否在每个事件触发时创建了一个全新的页面实例?

小智 13

是的,为所有回发创建页面的新实例是正常的.只要用户的会话持续存在,即使服务器无法知道用户是否仍在查看页面,另一种方法是保持服务器端对象的存在.由于这是不合需要的,因此需要一种替代方法:在每个请求之间销毁和重新创建页面.

某些控件(包括确实是日历控件)将自动导致回发,以便(例如)显示用户选择不同月份后的月份中的正确日期.其他控件不会导致此类回发,因为它们根本不需要新的服务器生成的信息,或者因为它们使用其他方法来联系服务器.控件的文档应该告诉您,以及如何(如果有的话)可以控制行为.

  • @PaulZahra我不确定我理解你的评论,但任何使用`UpdatePanel`控件的东西,无论是直接还是幕后,实际上都会在服务器上创建一个新页面,就像传统的回发一样.只有更新页面如何发送到客户端才会发生变化:只有指定控件的渲染输出才会被发回. (6认同)