C# IPostbackEventHandler与IPostbackDataHandler

C# IPostbackEventHandler与IPostbackDataHandler,c#,.net,asp.net,events,postback,C#,.net,Asp.net,Events,Postback,(一) 在DropDownList中选择项目的用户被认为是回发数据,因此DropDownList实现了IPostbackDataHandler a) 但为什么用户(在日历控件中)移动到另一个月不也被认为是回发数据呢?因此,为什么日历实现IPostbackEventHandler而不是IPostbackDataHandler 2) a) 我假设实现IPostbackEventHandler而不是IPostbackDataHandler的控件从未接收回发数据 b) 如果控件实现了IPostba

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

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


2)
a) 我假设实现IPostbackEventHandler而不是IPostbackDataHandler的控件从未接收回发数据


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

但若控件实现了IPostbackEventHandler,那个么该控件的回发事件将被引发的唯一时间是该控件是否也触发了回发

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

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


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

    如果可以的话,我会接受这个答案,而不是那个问这个问题的人,他从不回头看。