【问题标题】:TempData - "object reference not set to an instance of an object" when refreshing the pageTempData - 刷新页面时“对象引用未设置为对象的实例”
【发布时间】:2020-11-21 20:28:17
【问题描述】:

我有一个奇怪的错误。我正在使用 tempData 将值从一个控制器发送到另一个控制器。程序运行时效果很好,我可以多次调用该函数,临时数据按预期工作。

如果我刷新网页,就会出现问题。我收到此错误:

 object reference not set to an instance of an object

这是我向 TempData 添加值 id 的代码:

    public IActionResult Details(int? id)
        {
            TempData["ID"] = id;
        }

这是我在单独的控制器中使用 TempData 中的值的代码:

   public async Task<IActionResult> Index(string SubjectName, int CourseID)
        {
          
            //professor id
            int professorID = (int)TempData["ID"];
}

有没有办法在刷新页面时保存我存储在临时数据中的值?

任何提示/建议将不胜感激。

【问题讨论】:

  • 刷新时你确定id != null吗?
  • 不,我说刷新时 id 为空,我问即使我刷新页面时如何将值保留在 id 中。
  • 我将编辑我的问题以使其更清晰。
  • 好吧,那么这一切都取决于前端(web/javascript)是如何制作的......

标签: asp.net asp.net-mvc asp.net-core model-view-controller tempdata


【解决方案1】:

事实证明,您实际上可以调用“keep”函数,这样您在 TempData 中输入的任何值都会持续多次调用。

在我访问 TempData 中的值的第二个控制器中,我只需要输入这行代码:

     TempData.Keep("ID");
     int professorID = (int)TempData["ID"];

即使单击刷新,该值也会保留在字典中。

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    相关资源
    最近更新 更多