【问题标题】:TempData is null after redirection重定向后 TempData 为空
【发布时间】:2019-10-13 08:39:56
【问题描述】:

我想使用 TempData 在 Test1 和 Test2 操作之间传递消息,但是当我在 Test2 的操作上读取 tempdata 的键时,TempData 键上的值为 null。我在 MDSN 上阅读了有关 TempData 的文档,这就是它所说的:

表示仅从一个请求持续到 下一个。

我的代码是:

public class TestController : Controller
{
    public const string TEMP_DATA_KEY = "TEST";
    public IActionResult Test1()
    {
        TempData[TEMP_DATA_KEY] = "ciao";
        return RedirectToAction(nameof(Test2));
    }
    public IActionResult Test2()
    {
        TempData.TryGetValue(TEMP_DATA_KEY, out object saluto);
        return View();
    }
}

怎么了,Test1 是第一个请求 Test2 是下一个请求,为什么 TempData 为空?

谢谢你的问候

【问题讨论】:

  • 您的代码可以正常工作。您希望对您的敬礼对象做什么?如果你想在 Test2 的视图上显示它,你还需要将它传递给视图 => return View(saluto);在调试时检查您的代码,您会看到 saluto 对象被实例化为“ciao”的预期内容
  • 我在我的解决方案上尝试了这段代码,但它不起作用,变量 saluto 为空我的解决方案是在 aspnet core 2.2 上开发的
  • 你能把你对应的View添加到问题中吗?
  • 是否有任何演示可以重现您的问题?检查网络浏览器调试网络选项卡,查看是否有任何 cookie 包含TEST
  • @TaoZhou,对不起,我无法发布我的解决方案,在网络选项卡中没有任何 cookie

标签: asp.net-core-mvc tempdata


【解决方案1】:

在您的控制器中更新 Test2 操作,如下所述:

    public const string TEMP_DATA_KEY = "TEST";
    public IActionResult Test1()
    {
        TempData[TEMP_DATA_KEY] = "ciao";
        return RedirectToAction(nameof(Test2));
    }
    public IActionResult Test2()
    {
        TempData.TryGetValue(TEMP_DATA_KEY, out object saluto);
        return View(saluto);
    }

如下所示更新您的视图 (Test2.cshtml)。

@model string
@{
    ViewData["Title"] = "Test2";
}

<h1>@Model</h1>

这将显示您在 Test1 中添加到 Test2 视图的 h1 标记中的 TempData 中的值。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2019-06-15
    • 2016-06-20
    • 2011-10-30
    相关资源
    最近更新 更多