【发布时间】:2018-05-10 22:14:39
【问题描述】:
我在 mvc 中有以下代码。
[HttpGet]
public ActionResult RegionHeaderItem(int regionId)
{
var objectvalue = ViewData["RegionDashboardHeader"];
if (objectvalue != null )
{
IDictionary<int, bool> sessionItem = (IDictionary<int, bool>)objectvalue;
if (sessionItem.ContainsKey(regionId))
{
sessionItem[regionId] = !sessionItem[regionId];
}
else
{
sessionItem.Add(regionId, true);
}
ViewData["RegionDashboardHeader"] = sessionItem;
}
else
{
objectvalue = new Dictionary<int, bool>();
IDictionary<int, bool> sessionItem = (IDictionary<int, bool>)objectvalue;
sessionItem.Add(regionId, true);
ViewData["RegionDashboardHeader"] = sessionItem;
}
var regionVMObj = this.GetRegionDetails(regionId);
return PartialView(regionVMObj);
}
并在视图中有以下代码。
var objectvalue = ViewData["RegionDashboardHeader"];
var objectvalue = ViewData["RegionDashboardHeader"];
var sessionItem = (IDictionary<int, bool>)objectvalue;
var display = sessionItem == null ? false : sessionItem.ContainsKey(Model.Id) ? sessionItem[Model.Id] : false;
基本上我正在做的是我从控制器发送一些对象以查看并将该对象保存在 viewdata 中,并在用户单击 + 和 - 时使用数据显示展开按钮。
我能够完美地扩展它。现在当我崩溃时,我点击了相同的方法 RegionHeaderItem 我想在我折叠并检查数据空值时带回视图数据。
问题我能够展开,但折叠时 objectvalue 再次设置回 null。
任何人都可以帮助实现这一目标吗?
【问题讨论】:
-
你的第一行代码 -
var objectvalue = ViewData["RegionDashboardHeader"];没有意义 - 它总是null(ViewData用于将数据从控制器发送到视图 - 一旦方法退出,它就会被释放并且视图已发送到浏览器) -
是的,我明白,有没有其他的方法来写那行。早些时候我曾经写过 Session["ContractPaymentHeader"] 但由于我现在使用的是 dot net core,所以我无法访问 Session["ContractPaymentHeader"] 。它不包含在当前库中。
标签: c# asp.net-mvc session