IPostBackDataHandler 接口

定义

定义 ASP.NET 服务器控件为自动加载回发数据而必须实现的方法。Defines methods that ASP.NET server controls must implement to automatically load postback data.

public interface class IPostBackDataHandler
public interface IPostBackDataHandler
type IPostBackDataHandler = interface
Public Interface IPostBackDataHandler
派生

示例

下面的代码示例演示实现IPostBackDataHandler接口的自定义文本框服务器控件。The following code example demonstrates a custom text box server control that implements the IPostBackDataHandler interface. Text属性因回发而发生更改, 并且服务器控件在回发数据加载TextChanged后引发事件。The Text property is changed as a result of the postback, and the server control raises a TextChanged event after postback data has been loaded.

using System;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;

namespace CustomWebFormsControls {

   [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] 
   public class MyTextBox: Control, IPostBackDataHandler {

      public String Text {
         get {
            return (String) ViewState["Text"];
         }

         set {
            ViewState["Text"] = value;
         }
      }      

      public event EventHandler TextChanged;

      public virtual bool LoadPostData(string postDataKey, 
         NameValueCollection postCollection) {

         String presentValue = Text;
         String postedValue = postCollection[postDataKey];

         if (presentValue == null || !presentValue.Equals(postedValue)) {
            Text = postedValue;
            return true;
         }

         return false;
      }

      public virtual void RaisePostDataChangedEvent() {
         OnTextChanged(EventArgs.Empty);
      }

      protected virtual void OnTextChanged(EventArgs e) {
         if (TextChanged != null)
            TextChanged(this,e);
      }

      protected override void Render(HtmlTextWriter output) {
         output.Write("<INPUT type= text name = "+this.UniqueID
            + " value = " + this.Text + " >");
      }
   }   
}
   
Imports System.Web
Imports System.Web.UI
Imports System.Collections
Imports System.Collections.Specialized

Namespace CustomWebFormsControls
    
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> Public Class MyTextBox
        Inherits Control
        Implements IPostBackDataHandler
        
        
        Public Property Text() As String
            Get
                Return CType(Me.ViewState("Text"), String)
            End Get
            
            Set
                Me.ViewState("Text") = value
            End Set
        End Property
        
        
        Public Event TextChanged As EventHandler
        
        
        Public Overridable Shadows Function LoadPostData( _
        postDataKey As String, _
        postCollection As System.Collections.Specialized.NameValueCollection) _
        As Boolean Implements IPostBackDataHandler.LoadPostData
            
            Dim presentValue As String = Text
            Dim postedValue As String = postCollection(postDataKey)
            
            If presentValue Is Nothing Or Not presentValue.Equals(postedValue) Then
                Text = postedValue
                Return True
            End If
            
            Return False
        End Function
        
        
        Public Overridable Shadows Sub RaisePostDataChangedEvent() _
        Implements IPostBackDataHandler.RaisePostDataChangedEvent
        
            OnTextChanged(EventArgs.Empty)
        End Sub
        
        
        Protected Overridable Sub OnTextChanged(e As EventArgs)
            RaiseEvent TextChanged(Me, e)
        End Sub
        
        
        Protected Overrides Sub Render(output As HtmlTextWriter)
            output.Write("<INPUT type= text name = " & Me.UniqueID & _
                " value = " & Me.Text & " >")
        End Sub
        
    End Class
    
End Namespace

注解

创建需要检查客户IPostBackDataHandler端回发到服务器的窗体数据的服务器控件时, 必须实现接口。You must implement the IPostBackDataHandler interface when creating a server control that needs to examine form data that is posted back to the server by the client. 此接口定义的协定允许服务器控件确定其状态是否应因回发而更改, 并引发相应的事件。The contract that this interface defines allows a server control to determine whether its state should be altered as a result of the postback, and to raise the appropriate events. 有关详细信息, 请参阅ASP.NET Web Forms Pages 中的服务器事件处理For more information, see Server Event Handling in ASP.NET Web Forms Pages.

方法

LoadPostData(String, NameValueCollection)

当由某个类实现时,它为 ASP.NET 服务器控件处理回发数据。When implemented by a class, processes postback data for an ASP.NET server control.

RaisePostDataChangedEvent()

当由某个类实现时,它用信号要求服务器控件通知 ASP.NET 应用程序该控件的状态已更改。When implemented by a class, signals the server control to notify the ASP.NET application that the state of the control has changed.

适用于

另请参阅