0

我的控件中有一个模板属性,声明如下:

<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 属性,但我不能,因为它无效。

4

1 回答 1

0

您是否将值放入 ViewState?据我了解,您需要这样做。要么,要么在每次回发时重新绑定数据。

这是我喜欢在用户控件中做的事情。我很抱歉这是 C# 而不是 VB,但我不知道 VB:

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

参考: https ://weblogs.asp.net/infinitiesloop/Truly-Understanding-Viewstate

于 2017-08-15T20:25:24.453 回答