2012-03-15 73 views
0

我有以下控制器動作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添加到字典式「映射」。但是對於每次上傳,映射都會重新初始化它自己。我如何堅持它的價值觀?

+0

您是否嘗試過在您的操作方法之外移動映射集合? – 2012-03-15 20:19:14

+0

也不會工作 - 使它靜態將有所幫助(一點),但你知道 - 你的「應用程序」不運行一致沒有配置IIS主機是「不可擴展的」 – Carsten 2012-03-15 20:22:01

+0

好點卡斯滕 – 2012-03-15 20:28:21

回答

1

如果你真的想要它persistend和可擴展性,你將不得不在數據庫中這樣做。但使用會話對象或其他cachich機制也可能適用於您。

BTW:將字典移動到控制器中將無法正常工作,因爲控制器每次調用時都會創建控制器(是的,您可以更改它,但這是默認行爲)。

我會考慮使用數據庫。

+0

謝謝。我會嘗試一下。 – GoldenUser 2012-03-15 20:26:02

1

我想你可以在類的頂部做一個靜態變量:

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

但是,這僅與該代碼運行在服務器上的會話住你可能會更好保存和重裝來自數據庫的數據。

+0

謝謝,我會試試看。 – GoldenUser 2012-03-15 20:25:54