Asp.net mvc 3 在会话中存储对象
我知道这个问题已经在很多帖子中讨论过了,但我就是不能解决它 在ActionResult内部的控制器中,我希望在会话中存储一个对象,并在另一个ActionResult中检索它。就像这样:Asp.net mvc 3 在会话中存储对象,asp.net-mvc-3,Asp.net Mvc 3,我知道这个问题已经在很多帖子中讨论过了,但我就是不能解决它 在ActionResult内部的控制器中,我希望在会话中存储一个对象,并在另一个ActionResult中检索它。就像这样: public ActionResult Step1() { return View(); } [HttpPost] public ActionResult Step1(Step1VM step1) { if (ModelState.
public ActionResult Step1()
{
return View();
}
[HttpPost]
public ActionResult Step1(Step1VM step1)
{
if (ModelState.IsValid)
{
WizardProductVM wiz = new WizardProductVM();
wiz.Step1 = step1;
//Store the wizard in session
// .....
return View("Step2");
}
return View(step1);
}
[HttpPost]
public ActionResult Step2(Step2VM step2)
{
if (ModelState.IsValid)
{
//Pull the wizard from the session
// .....
wiz.Step2 = step2;
//Store the wizard in session again
// .....
return View("Step3");
}
}
如果您只在下一个操作中需要它,并且计划再次存储它,则可以使用TempData。TempData基本上与Session相同,只是它在下次访问时被“删除”,因此需要像您所说的那样再次存储它 但是,如果可能,最好确定一种使用已发布参数传递必要数据的方法,而不是依赖会话(tempdata或其他方式)存储向导:
Session["object"] = wiz;
WizardProductVM wiz = (WizardProductVM)Session["object"];
获取向导:
Session["object"] = wiz;
WizardProductVM wiz = (WizardProductVM)Session["object"];
谢谢你的回答!它可以工作,但我选择了会话方式作为解决方案,因为在向导中导航时,我可以在任何地方检索我的对象。上面的链接现在已失效<代码>此主题不再可用-该网站说。我正在努力链接到列表中对象的更深入显示。这正是我需要的。非常感谢。