坚持字典价值

时间:2012-03-15 20:16:04

标签: c# asp.net-mvc

我有一个带有以下控制器操作的ASP.NET MVC应用程序:

public ActionResult Upload(HttpPostedFileBase fileData)
        {
            Dictionary<string, int> mappings = new Dictionary<string, int>();
Byte[] destination = new Byte[fileData.ContentLength];
                        fileData.InputStream.Position = 0;
                        fileData.InputStream.Read(destination, 0, fileData.ContentLength);
                        var returnValue = GUIDGenerator(destination);
                        mappings.Add(fileData.FileName, returnValue);
                        return Json(new { success = true });
                    }

每次用户选择文件并上传文件时,我都希望将其名称和GUID添加到字典类型“mappings”中。但是每次上传时,映射都会重新初始化。如何在其中保留值?

2 个答案:

答案 0 :(得分:1)

如果你真的想要它的持久性和可扩展性,你将不得不在数据库中这样做。但是使用Session-object或其他cachich机制也可能对你有用。

BTW:将字典移动到控制器中也不会有效,因为每次调用一个方法时都会创建控制器(是的,你可以改变它,但这是默认行为)。

我会考虑使用数据库。

答案 1 :(得分:1)

我想你可以在课程顶部创建一个静态变量:

private static Dictionary<string, int> _mappings = new Dictionary<string, int>();

但是只会在代码运行的服务器上使用该会话。最好从数据库中保存并重新加载该数据。