C# 列表<;SelectListItem>;-正在会话中缓存选定状态

C# 列表<;SelectListItem>;-正在会话中缓存选定状态,c#,asp.net-mvc-3,session,caching,selectlistitem,C#,Asp.net Mvc 3,Session,Caching,Selectlistitem,在过去的一天里,我一直在处理一个问题,这让我发疯。 我有一个MVC 3应用程序,它使用globalactionfilter.cs创建下拉列表并将其存储在会话变量中。这很好,我们刚刚发现一个bug,当你编辑一个项目(使用模态和_编辑视图)并保存它时,如果你点击创建,下拉值默认为先前编辑的选定状态。我可以在保存时清除会话变量,但这似乎不是正确的解决方案。我想阻止保存状态周期,这样在每个编辑控制器上我就不必清除会话变量 请帮我看看我在哪里打球 viewBag.ValidationBaseDes

在过去的一天里,我一直在处理一个问题,这让我发疯。
我有一个MVC 3应用程序,它使用globalactionfilter.cs创建下拉列表并将其存储在会话变量中。这很好,我们刚刚发现一个bug,当你编辑一个项目(使用模态和_编辑视图)并保存它时,如果你点击创建,下拉值默认为先前编辑的选定状态。我可以在保存时清除会话变量,但这似乎不是正确的解决方案。我想阻止保存状态周期,这样在每个编辑控制器上我就不必清除会话变量

请帮我看看我在哪里打球

    viewBag.ValidationBaseDescriptions = _AllValidationBaseDescriptions

    private List<SelectListItem> _AllValidationBaseDescriptions
    {
        get
        {
            List<SelectListItem> retList = new List<SelectListItem>();

            if (HttpContext.Current.Session["ValidationBaseDescriptions"] != null)
            {
                retList = (List<SelectListItem>)HttpContext.Current.Session["ValidationBaseDescriptions"];
            }
            else
            {
                retList = _uiContext.ValidationBases.OrderBy(x => x.Description).Select(o => new SelectListItem
                {
                    Text = o.Description,
                    Value = SqlFunctions.StringConvert((double)o.ID).Trim()
                }).ToList();

                retList.Insert(0, new SelectListItem { Text = "", Value = "", Selected = true });

                HttpContext.Current.Session["ValidationBaseDescriptions"] = retList;
            }
            return retList;
        }
    }
    model.validationDropdown = viewBag.ValidationBaseDescriptions