0

在我的 mvc3 项目中,我将 Dictionary 保存在 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

1 回答 1

4

每当TempData读取它包含的值时都会返回,然后将其从 TempData 中删除。TempData 实际上使用标准Session对象,但不同之处在于当您读取一个值时,TempData 对象会从会话中删除。

通常它仅用于重定向或您需要持续到下一页加载的东西。

于 2012-06-15T04:54:22.067 回答