2012-06-15 69 views
0

在我的mvc3項目中,我將Dictionary保存在Tempdata Dictionary中。c#Mvc 3 Tempdata Dictionary?

TempData[ViewDataKeys.ItemsAdd] = new Dictionary<int, int>(); 

當Ajax請求我添加項目到TempData[ViewDataKeys.ItemsAdd]。 它已更新,但當我從TempData[ViewDataKeys.ItemsAdd]中刪除項目時,它不會更新。

TempData[ViewDataKeys.ItemsAdd]中刪除一項後,爲空。

private void RemoveFrom(int Uid) 
    { 
     if (TempData[ViewDataKeys.ItemsAdd] == null) 
     { 
      TempData[ViewDataKeys.ItemsAdd] = new Dictionary<int, int>(); 
     } 
     var a= (Dictionary<int,int>)TempData[ViewDataKeys.ItemsAdd]; 
     a.Remove(Uid); 
     TempData[ViewDataKeys.ItemsAdd] = a; 
    } 


     private void AddTo(int Uid) 
    { 
     if (TempData[ViewDataKeys.ItemsAdd] == null) 
     { 
      TempData[ViewDataKeys.ItemsAdd] = new Dictionary<int,int>(); 
     } 

     var a= (Dictionary<int,int>)TempData[ViewDataKeys.ItemsAdd]; 
     a.Add(Uid, Uid); 
     TempData[ViewDataKeys.ItemsAdd] = a; 
    } 

回答

4

每當TempData讀它包含的值返回,然後它是從TempData的去除。 TempData實際上使用標準的Session對象,但不同之處在於當您讀取TempData對象從會話中刪除的值時。

通常它只能用於重定向或您需要堅持下一頁加載的東西。

+0

但是,當我添加項目是好的。 –

+1

是的,你可以添加一個項目,但下次你閱讀它的項目已經消失。如果你想要一個持久存儲,那麼你應該使用'Session'' – Buildstarted

+0

對不起,我應該更清楚。下一次您讀取項目TempData返回它的值,然後*然後*將其刪除。 – Buildstarted