在两个操作之间,列表从计数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。我真的很困惑。
有人能帮忙吗?
列表变量/字段仅在单个请求的持续时间内存在;任何按钮单击(如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;
}
}
并使用页面类的此属性。