1) 用户在 DropDownList 中选择一个项目被认为是回发数据,因此 DropDownList 实现了 IPostbackDataHandler。
a) 但为什么用户移动(在 Calendar 控件中)到另一个月不也被视为回发数据?因此,为什么 Calendar 实现了 IPostbackEventHandler 而不是 IPostbackDataHandler?
2)
a) 我假设实现 IPostbackEventHandler 而不是 IPostbackDataHandler 的控件从不接收回发数据?
b) 如果控件实现了IPostbackDataHandler,那么每次数据改变时控件的回发事件都会被触发,即使那个控件没有引起回发
但是如果控件实现了IPostbackEventHandler,那么只有当该控件也触发了回发时才会引发该控件的回发事件?
最佳答案
- DropDownList 与日历事件接口(interface):
- 下拉列表中的选择被视为数据。您可以将下拉列表中的信息作为数据提交(在大多数情况下)。
- 更改日历控件上的选择被视为事件,但不是提交数据的事件。它只是触发一个事件,以便代码知道更改控件的状态。
这两者之间的区别非常微妙。
IPostBackEventHandler
的文档和IPostBackDataHandler
在文档中解释它们的用途,但它们未能明确区分:IPostBackEventHandler
用于触发不依赖于数据但依赖于用户操作的事件。例如,Calendar
控件可以在单击日期时触发事件。此事件取决于用户的操作,而不是用户输入的数据。IPostBackDataHandler
用于触发依赖于控件中数据的事件。例如,TextBox
有一个OnTextChanged
事件,只有当TextBox
中的文本发生变化时才会触发该事件。
关于c# - IPostbackEventHandler VS IPostbackDataHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/918561/