Asp.net mvc 3 在会话中存储对象

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.

我知道这个问题已经在很多帖子中讨论过了,但我就是不能解决它

在ActionResult内部的控制器中,我希望在会话中存储一个对象,并在另一个ActionResult中检索它。就像这样:

    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"];

谢谢你的回答!它可以工作,但我选择了会话方式作为解决方案,因为在向导中导航时,我可以在任何地方检索我的对象。上面的链接现在已失效<代码>此主题不再可用-该网站说。我正在努力链接到列表中对象的更深入显示。这正是我需要的。非常感谢。