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

标签 asp.net vb.net user-controls postback viewstate

我正在将用户控件动态加载到一个 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/

相关文章:

c# - 报告应用程序服务器失败

asp.net - 我可以使用 <asp :Image's? 使用 asp.net 图像从这些图像制作 Sprite 图像吗

vb.net - 按换行符分割字符串 VB.NET

asp.net - 如何跨多个 ASP.NET 请求更新 EF 中的实体而无需再次检索它?

regex - 如何使用正则表达式在 HTML 文本中查找所有 url?

ASP.NET 用户控件性能增强

Asp.net session 变量混淆

c# - 如何使用 C# ASP MVC 反序列化 json 字符串

c# - 调试 XMLHttpRequest POST

vb.net - 在 Vb.Net 窗体中处理跨线程异常