1) 用户选择 DropDownList 中的项目被视为回发数据,因此 DropDownList 实现 IPostbackDataHandler 。
a)但是为什么用户移动(在日历控件中)到另一个月也被认为是回发数据?那么,为什么 Calendar 实现 IPostbackEventHandler 而不是 IPostbackDataHandler ?
2)
a)我假设实现 IPostbackEventHandler 而不是 IPostbackDataHandler 的控件永远不会收到回发数据?
b)如果控件实现 IPostbackDataHandler ,那么每次数据更改时都会触发控件的回发事件,即使该控件没有导致回发
但是如果控件实现 IPostbackEventHandler ,那么只有控件的回发事件会被引发的时间是否该控件也触发了回发?
答案 0 :(得分:19)
IPostBackEventHandler
和IPostBackDataHandler
的文档在文档中解释了它们的用途,但它们未能明确区分:
IPostBackEventHandler
用于触发不依赖于数据但依赖于用户操作的事件。例如,Calendar
控件可以触发单击日期的事件。此事件取决于用户的操作,而不是用户输入的数据。IPostBackDataHandler
用于触发依赖于控件中数据的事件。例如,TextBox
有一个OnTextChanged
事件,只有在TextBox
中的文字发生变化时才会触发该事件。答案 1 :(得分:3)
要添加,实现IPostbackDataHandler的控件不依赖于视图状态来保留回发之间的数据。
编辑:但所有控件都依赖于视图状态来保持可见性