0

私のmvc3プロジェクトでは、DictionaryをTempdataDictionaryに保持しています。

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

Ajaxリクエストの場合、アイテムをに追加しますTempData[ViewDataKeys.ItemsAdd]。更新されますが、アイテムを削除しTempData[ViewDataKeys.ItemsAdd]ても更新されません。

から1つのアイテムを削除するTempData[ViewDataKeys.ItemsAdd]と、nullになります。

 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

1 に答える 1

4

読み取られるたびTempDataに、そこに含まれる値が返され、TempDataから削除されます。TempDataは実際には標準Sessionオブジェクトを使用しますが、違いは、値を読み取るときにTempDataオブジェクトがセッションから削除されることです。

通常、これはリダイレクトまたは次のページの読み込みまで持続する必要があるものにのみ使用されます。

于 2012-06-15T04:54:22.067 に答える