IPostbackEventHandler VS IPostbackDataHandler

时间:2009-05-27 23:53:12

标签: c# .net asp.net events postback

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

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


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


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

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

2 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:3)

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

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