J'ai une page ASPX qui contient un contrôle utilisateur. Le contrôle utilisateur affiche un objet métier et permet à l'utilisateur de modifier l'objet. Le contrôle utilisateur a une propriété qui contient l'objet affiché.Comment gérer les événements d'un objet enregistré en tant que propriété d'un contrôle utilisateur?
Public Property Item() As Widget
Get
If ViewState("Item") IsNot Nothing Then
Return DirectCast(ViewState("Item"), Widget)
End If
Return Nothing
End Get
Private Set(ByVal value As Widget)
ViewState("Item") = value
End Set
End Property
J'ai récemment ajouté une nouvelle fonctionnalité à Widgets afin qu'il soulève un événement dans certaines circonstances. Je veux gérer cet événement dans mon contrôle utilisateur.
Comment connecter le gestionnaire à la propriété? Protected Sub WidgetHandler (Expéditeur ByVal en tant qu'objet, ByVal e en tant que WidgetEventArgs) Handles Me.Item.WidgetEvent ne fonctionne pas. Il génère une erreur de sérialisation indiquant que le contrôle utilisateur n'est pas sérialisable. Widgets et WidgetEventArgs sont marqués Serializable. J'ai essayé protégé WithEvents MyItem Comme Widget, a changé la déclaration de gestionnaire à ... Poignées myItem.WidgetEvent, et a ajouté MyItem = valeur au poseur d'objet, mais qui n'a fait aucune différence. J'ai également essayé d'utiliser AddHandler dans le setter mais cela n'a pas fonctionné non plus.
Quelle est la bonne façon de gérer une référence à l'objet métier dans mon contrôle utilisateur afin que je puisse gérer ses événements?
Merci