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

时间:2013-06-03 13:06:53

标签: c# asp.net-mvc-3 razor session-variables

我正在研究asp.net mvc3应用程序。我想这是在某个地方描述的,但快速搜索并没有多大帮助,而且我对使用Session变量的看法也非常多样,但我还有一点时间做出决定。

问题是我有一个剃刀视图,其中显示图库图像,具有权限的用户可以删除一个或多个图像。但是我无法在用户单击按钮时删除每个图像,而是我必须收集已从用户“删除”的图像的ID(我删除了保存图像的span标记)但实际删除是由服务执行的,我必须立即将所有数据传递给服务。

所有这些都在Html.BeginForm内,所以数据是在提交时收集的,在此之前我需要一种以某种方式存储这些值的方法。使用会话似乎是目前最简单的方法。我试过这样的事情:

public void DeletePicture(long documentImageID)
        {
            if (documentImageID != null)
            {
                Session["imagesIdForDeleting"] = documentImageID;
            }
        }

但是通过简单的调试我无法先弄清楚 - 我怎么能从documentImageID访问Session["imagesIdForDeleting"]值。我不知道这只是语法问题还是我试图让事情变得不那么复杂。另外 - 我不确定是否制作这样的东西我实际上是在保存所有的值,或者我重写了以前的值,并且总是只有一个值存储在会话变量中。无论如何,任何帮助如何实现这一权利将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以将列表存储在Session

e.g。

    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);
        }
    }

答案 1 :(得分:0)

  

我不确定是否制作了这样的东西我实际上正在保存所有的东西   值或我重写前一个值,并始终只有一个值   存储在会话变量中。

是的,你是否正确覆盖储值。

使用键入的列表存储图像并将其放入会话中。

public void DeletePicture(long documentImageID)
        {
            if (documentImageID != null)
            {
                if(Session["imagesIdForDeleting"]) == null
                {
                      Session["imagesIdForDeleting"] = new List<long>();
                 }

                ((List<long>)Session["imagesIdForDeleting"]).Add( documentImageID);
            }
        }