我正在研究asp.net mvc3应用程序。我想这是在某个地方描述的,但快速搜索并没有多大帮助,而且我对使用Session变量的看法也非常多样,但我还有一点时间做出决定。
问题是我有一个剃刀视图,其中显示图库图像,具有权限的用户可以删除一个或多个图像。但是我无法在用户单击按钮时删除每个图像,而是我必须收集已从用户“删除”的图像的ID(我删除了保存图像的span标记)但实际删除是由服务执行的,我必须立即将所有数据传递给服务。
所有这些都在Html.BeginForm
内,所以数据是在提交时收集的,在此之前我需要一种以某种方式存储这些值的方法。使用会话似乎是目前最简单的方法。我试过这样的事情:
public void DeletePicture(long documentImageID)
{
if (documentImageID != null)
{
Session["imagesIdForDeleting"] = documentImageID;
}
}
但是通过简单的调试我无法先弄清楚 - 我怎么能从documentImageID
访问Session["imagesIdForDeleting"]
值。我不知道这只是语法问题还是我试图让事情变得不那么复杂。另外 - 我不确定是否制作这样的东西我实际上是在保存所有的值,或者我重写了以前的值,并且总是只有一个值存储在会话变量中。无论如何,任何帮助如何实现这一权利将不胜感激。
答案 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);
}
}