1

我正在研究 asp.net mvc3 应用程序。我想它在某处有所描述,但快速搜索并没有太大帮助,而且我对使用 Session 变量有非常不同的意见,但我仍然有一点时间做出决定。

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

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

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

但是通过一个简单的调试,我首先无法弄清楚 - 我根本无法documentImageIDSession["imagesIdForDeleting"]. 我不知道这只是语法问题,还是我试图让事情变得比实际情况更简单。另外-我不确定是否要进行这样的操作,我实际上是在保存所有值还是我重写了以前的值并且始终只有一个值存储在会话变量中。无论如何,任何帮助如何实现这一权利将不胜感激。

4

2 回答 2

1

您可以将列表存储在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);
        }
    }
于 2013-06-03T13:14:56.507 回答
0

我不确定是在做这样的事情我实际上是在保存所有值还是我重写了以前的值并且总是只有一个值存储在会话变量中。

是的,您对覆盖存储的值是正确的。

使用类型化列表存储图像并将其放入会话中。

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

                ((List<long>)Session["imagesIdForDeleting"]).Add( documentImageID);
            }
        }
于 2013-06-03T13:13:44.243 回答