在单个会话变量中保存多个值,然后检索它们

本文关键字:然后 检索 会话 单个 变量 保存 | 更新日期: 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);
            }
        }