ASP.NET Поддержание ViewState для элементов управления в пользовательском шаблоне элемента управления

У меня есть свойство шаблона в моем элементе управления, объявленном следующим образом:

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

В моем контроле Init Событие у меня следующее:

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

    PlaceHolder.Controls.Add(TemplateContainer)
End If

Это позволяет мне размещать элементы управления в разметке внутри моего шаблона, но на обратной стороне элементы управления внутри шаблона не содержат их ViewState.

Я пробовал добавлять PersistChildren(True) Атрибут для свойства CustomTemplate, но я не могу, потому что это недопустимо.

1 ответ

Вы кладете значения в ViewState? Из того, что я понимаю, вам нужно это сделать. Либо так, либо повторно свяжите с данными на каждой обратной передаче.

Вот что мне нравится делать в пользовательских элементах управления. Я извиняюсь за то, что это C#, а не VB, но я не знаю VB:

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

Ссылка: https://weblogs.asp.net/infinitiesloop/Truly-Understanding-Viewstate

Другие вопросы по тегам