2017-08-15 4 views
0

J'ai une propriété de modèle dans mon contrôle déclaré comme suit:ASP.NET Maintenir ViewState pour les contrôles à l'intérieur d'un modèle de contrôle personnalisé

<TemplateContainer(GetType(GenericTemplateContainer)), 
    PersistenceMode(PersistenceMode.InnerProperty), 
    TemplateInstance(TemplateInstance.Single)> 
Property CustomTemplate As ITemplate 

En cas Init de mon contrôle, je donne les résultats suivants:

If Me.CustomTemplate IsNot Nothing Then 
    Dim TemplateContainer As New GenericTemplateContainer 
    Me.CustomTemplate.InstantiateIn(TemplateContainer) 

    PlaceHolder.Controls.Add(TemplateContainer) 
End If 

Cela me permet de placer des contrôles dans le balisage à l'intérieur de mon gabarit, mais sur un post-retour, les contrôles à l'intérieur du gabarit ne contiennent pas leur ViewState.

J'ai essayé d'ajouter l'attribut PersistChildren(True) à la propriété CustomTemplate, mais je ne peux pas parce que ce n'est pas valide.

Répondre

0

Mettez-vous les valeurs dans ViewState? D'après ce que je comprends, vous devez le faire. Soit cela, ou re-bind avec les données sur chaque publication.

Voici ce que j'aime faire dans les contrôles utilisateur. Je présente mes excuses pour cet être C# et VB pas, mais je ne sais pas VB:

public string Text { 
      get { return (string)ViewState["Text"]; } 
      set { ViewState["Text"] = value; } 
    } 

Référence: https://weblogs.asp.net/infinitiesloop/Truly-Understanding-Viewstate

+0

Merci pour la réponse, oui, je l'ai essayé ViewState mais il n'a pas fait un différence. – kaiyaq