【问题标题】:How to use sessions,Tempdata in asp.net mvc4如何在asp.net mvc4中使用会话、临时数据
【发布时间】:2015-10-29 15:58:02
【问题描述】:

我正在使用 mvc 4 架构开发 asp.net。这里我有两个控制器 Display 和 SessionEx。在显示控制器中,我有如下方法

public ActionResult SessionExample()
{
    TempData["FortheFullRequest"] = "FortheFullRequest";

    string v = Session["Session1"].ToString();

    ViewData["Myval"] = "ControllertoView";

    ViewBag.MyVal = "ControllertoView";

    Session["Testing1"] = "Testing Session";

    return RedirectToAction("SomeOtherAction", "SessionEx");
}

在 SessionEx 控制器中我有如下方法

public ActionResult SomeOtherAction()
{
    string str1 = Convert.ToString(Session["Testing1"]);
    string str2 = Convert.ToString(TempData["FortheFullRequest"]);

    return View();
}

我正在调试项目,并且我还使用 watch 来查看 tempdata 和 session 中的获取。在开始时会话和临时数据中的适当值,但是当光标到达 RedirectToAction 方法时,所有值都存储在会话中并且临时数据变为空。请在这里帮助我。

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4 session


    【解决方案1】:

    如果您想存储在重定向到另一个操作方法后将使用的数据,请使用Session

    TempData 主要用于一次性的、短期的请求,如this SO question 中所述

    重定向到SomeOtherAction()后,您可能会发现TempData中的数据不存在,这是通过设计TempData的工作原理。

    说实话,我从不使用 TempData,我自己也看不出重点。

    【讨论】:

    • 我使用 session 来存储值,但是当控件传递到目的地时,值变为 null。
    • 当你执行这行时string str1 = Convert.ToString(Session["Testing1"]);的值总是NULL
    • 是的,当控件刚刚从源控制器传递时,值变为空。
    • 这很奇怪。我不知道为什么会这样。它应该是NULL 的一个原因是会话超时并重新启动。但是,如果您一直收到NULL,我不确定为什么会这样。对不起。
    • 即使我不明白发生这种情况的原因,但我整天都面临这个问题,当目标控制器到来时,值始终为空
    猜你喜欢
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多