【问题标题】:ASP.NET Maintaining ViewState for controls inside a custom control templateASP.NET 为自定义控件模板中的控件维护 ViewState
【发布时间】:2017-08-15 12:14:41
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net vb.net templates custom-controls itemplate


    【解决方案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

    【讨论】:

    • 感谢您的回答,是的,我已经尝试过 ViewState,但没有任何作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多