2008-12-18 5 views

Répondre

2

C'est vraiment très simple. Le NameValueCollection qui est passé à cette méthode du contrôle EVERY qui implémente l'interface IPostbackDataHandler est le contenu de Page.Request.Form. Donc, vous pouvez y accéder à tout moment en obtenant une montre sur HttpContext.Current.Request.Form.

1

Ugh ... Je suggère de définir votre environnement IDE jusqu'à debug the .net framework, et de définir un point d'arrêt sur la méthode LoadPostData() de contrôle. C'est un peu lourd, mais si vous êtes prêt à parcourir les appels récursifs à la classe Control (peut-être définir un point d'arrêt conditionnel sur la méthode?), Vous serez en mesure d'accéder aux données de cette façon.

Bonne chance!

1

Si vous voulez être sûr que vous examinez les données qui vont dans un contrôle particulier, vous pouvez sous-classer son type de contrôle et rompre lors d'une implémentation personnalisée de IPostBackDataHandler.LoadPostData. Par exemple, vous disposez d'un contrôle ajouté par programme pour collecter la ville de l'utilisateur. Changement:

Public City As Textbox 

à

Public City As BreakableLoadPostDataTextBox 

Public Class BreakableLoadPostDataTextBox 
    Inherits TextBox 

    Protected Overrides Function LoadPostData(_ 
    ByVal postDataKey As String, _ 
    ByVal postCollection As System.Collections.Specialized.NameValueCollection) _ 
    As Boolean 

    Return MyBase.LoadPostData(postDataKey, postCollection) ' Break here 
    End Function 
End Class 

Définir un point d'arrêt sur l'appel Return. Lorsque l'exécution est interrompue, vous devriez pouvoir voir le postDataKey qui est utilisé pour lire la nouvelle valeur du contrôle parmi les postCollection. Vous pouvez bien sûr ajouter cette méthode au contenu de votre coeur avec des appels de trace et autres joyeusetés.

Questions connexes