我有一个过去一天一直在处理的问题,这让我发疯。
我有一个 MVC 3 应用程序,它使用 globalactionfilter.cs 创建我们的下拉列表并将它们存储在会话变量中。效果很好,接受我们刚刚发现一个错误,当您编辑项目(使用模式和 _edit 视图)并保存它时,如果您然后单击创建,下拉值默认为先前编辑的选定状态。我可以在保存时清除会话变量,但这似乎不是正确的解决方案。我想防止保存状态周期,这样在每个编辑控制器上我就不必清除会话变量。
请帮我看看我在哪里Derping!
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