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