在单个会话变量中保存多个值,然后检索它们
本文关键字:然后 检索 会话 单个 变量 保存 | 更新日期: 2023-09-27 18:16:30
我正在asp.net mvc3应用程序上工作。我猜它是在某个地方描述的,但快速搜索没有多大帮助,而且我对使用会话变量得到非常不同的意见,但我仍然有一点时间做出决定。
问题是,我有一个剃刀视图,在图像库图像显示和用户有权限可以删除一个或多个图像。然而,我不能在用户点击按钮时删除每个图像,相反,我必须收集已经从用户"删除"的图像的id(我删除了保存图像的span标签),但实际的删除是由服务执行的,我必须一次传递服务的所有数据。
所有这些都在Html.BeginForm
中,所以数据是在提交时收集的,在此之前,我需要一种方法来存储这些值。使用会话似乎是目前最简单的方法。我尝试这样做:
public void DeletePicture(long documentImageID)
{
if (documentImageID != null)
{
Session["imagesIdForDeleting"] = documentImageID;
}
}
但是通过一个简单的调试,我无法首先弄清楚-我如何才能从Session["imagesIdForDeleting"]
访问documentImageID
值。我不知道这是否只是语法的问题,还是我试图让事情变得不那么复杂。也-我不确定是否做这样的东西,我实际上保存所有的值,或者我重写以前的值,总是只有一个值存储在会话变量。无论如何,任何帮助如何实现这一权利将不胜感激。
您可以在Session
中存储列表。
。
public void DeletePicture(long documentImageID)
{
if(Session["imagesIdForDeleting"] == null)
{
Session["imagesIdForDeleting"] = new List<long>();
}
if (documentImageID != null)
{
var list = (List<long >)Session["imagesIdForDeleting"];
list.Add(documentImageID);
}
}
我不确定做这样的东西是否真的保存了所有的或者重写之前的值,总是只有一个值存储在会话变量中。
是的,你是正确的覆盖存储值。
使用键入的列表来存储图像并将其放在会话中。
public void DeletePicture(long documentImageID)
{
if (documentImageID != null)
{
if(Session["imagesIdForDeleting"]) == null
{
Session["imagesIdForDeleting"] = new List<long>();
}
((List<long>)Session["imagesIdForDeleting"]).Add( documentImageID);
}
}