IPostbackEventHandler VS IPostbackDataHandler

1)用户在DropDownList中选择项目被认为是回发数据,因此DropDownList实现IPostbackDataHandler

a)但是为什么用户移动(在Calendar控件中)到另一个月也没有被认为是回发数据? 那么,为什么Calendar实现IPostbackEventHandler而不是IPostbackDataHandler呢?

2)
a)我假设实现IPostbackEventHandler而不是IPostbackDataHandler的控件永远不会收到回发数据?

b)如果控件实现了IPostbackDataHandler ,那么每次数据更改时都会触发控件的回发事件,即使该控件没有引发回发

但是如果控件实现了IPostbackEventHandler ,那么只有控件的回发事件会被引发的时间是该控件是否也触发了回发?

  1. DropDownList与Calendar事件接口:
    • 下拉列表中的选择被视为数据。 您可以将下拉列表中的信息作为数据提交(在大多数情况下)。
    • 更改Calendar控件上的选择被视为事件,但不是提交数据的事件。 它只是触发一个事件,以便代码知道改变控件的状态。
      这两者之间的区别非常微妙。
  2. IPostBackEventHandlerIPostBackDataHandler的文档解释了它们在文档中的用途,但它们未能明确区分:
    • IPostBackEventHandler用于触发不依赖于数据但依赖于用户操作的事件。 例如, Calendar控件可以触发单击日期的事件。 此事件取决于用户的操作,而不是用户输入的数据。
    • IPostBackDataHandler用于触发依赖于控件中数据的事件。 例如, TextBox有一个OnTextChanged事件,只有在TextBox中的TextBox发生更改时才会触发该事件。

要添加,实现IPostbackDataHandler的控件不依赖于视图状态来保留回发之间的数据。

编辑:但所有控件都依赖于视图状态来保持可见性