2017-08-15 74 views
0

我在我的控制模板属性声明如下内: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属性,但我不能,因为它无效。

回答

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

+0

感谢回答,是的,我已经试过ViewState的,但它并没有一个区别。 – kaiyaq