gpt4 book ai didi

asp.net - 在 PostBack 上保留动态 UserControl

转载 作者:行者123 更新时间:2023-12-02 07:43:03 24 4
gpt4 key购买 nike

我正在将用户控件动态加载到一个 div 中,我需要在回发时保留它,以便在用户完成编辑后调用 Save 方法。 div 和所有用户控件都有 EnableViewState = True

ASPX Div 声明

<div id="dynamicDiv" runat="server" enableviewstate="true">
</div>

代码隐藏

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Not IsPostBack) Then
'Implement some logic to load the User Controls using LoadControl
'Set all the userControl properties (including EnableViewState = True)
'Call a method in the user control to load it's content

Me.dynamicDiv.Controls.add(userControl)
End If
End Sub

Protected Sub Save(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
For Each t As userControlType In Me.dynamicDiv.Controls
t.Save()
Next
End Sub

所以...控件加载正常,但我找不到在回发时保留它们的方法,我无法重新加载它们,因为用户已经将数据输入到用户控件中(这是我需要保存的).

P.S. 我尝试将它们添加到列表,然后将列表添加到 ViewState,但我无法正确序列化控件。我为 userControl 的代码实现了 ISerializable 但随后它说 ASCX 没有被标记为可序列化的

程序集“App_Web_pn5vxhpw,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”中的类型“ASP.controls_userControlType_ascx”未标记为可序列化。

最佳答案

动态控件需要在页面初始化而不是页面加载期间添加。然后它们将被 View 状态拾取。而且每次都需要创建它们。创建动态控件时不需要 Ispostback。

关于asp.net - 在 PostBack 上保留动态 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com