在两个操作之间,列表从计数1变为0,而不需要代码.(asp.net)

本文关键字:变为 代码 net asp 不需要 两个 操作 之间 列表 | 更新日期: 2023-09-27 18:00:29

我得到了以下列表

List<int> deletedRecords = new List<int>();

当我点击网格视图中的删除按钮时,我会将该记录的Id添加到此列表中。

当用户单击保存按钮时,在继续操作之前,列表中存在的所有记录都将从数据库中删除。

然而,当我到达这一点时,列表总是空的。

List只在三个地方被引用,这三个地方是它的声明、它的.Add方法和一个foreach,用于循环遍历它所包含的所有值。

当我进行调试时,我可以看到List.Count变为1,但当我点击"保存"按钮时,我的调试显示List已变为0。我真的很困惑。

有人能帮忙吗?

在两个操作之间,列表从计数1变为0,而不需要代码.(asp.net)

列表变量/字段仅在单个请求的持续时间内存在;任何按钮单击(如Save)都是一个单独的请求,具有一组完全不同的对象。在许多情况下,它甚至不会由同一台服务器提供服务。

如果您需要请求之间的状态,则需要管理该状态,可能是通过会话状态。

在没有看到任何代码的情况下,我猜测如下:

您忘记了web应用程序没有状态

正如Marc和Esteban所说,你必须坚持你的物品。

所以与其写

List<int> deletedRecords = new List<int>();

你可以写

private List<int> deletedRecords
{
    get
    {
        var result = ViewState["deletedRecords"] as List<int>;
        if ( result == null )
        {
            result = new List<int>();
            ViewState["deletedRecords"] = result;
        }
        return result;
    }
}

并使用页面类的此属性。