如何在 ASP MVC 中使用和保留会话变量

本文关键字:保留 会话 变量 ASP MVC | 更新日期: 2023-09-27 18:34:24

我正在使用一个 ASP MVC 应用程序,并尝试在一个控制器中创建一个会话变量,然后访问另一个控制器中的该会话变量。我已经找到了有关PHP的文章,但是我找不到ASP MVC的解决方案。

我的代码现在对一个控制器进行 ajax 调用以更新帐号:

                $.ajax({
                    type: "PUT",
                    url: defender.techWebBaseUrl + "jobsinprogress/storenewmonitoringacctnumber/",
                    data: { acctNum: $("#newAcctNumber").val() }
                });

这将在控制器上执行:

  public void StoreNewMonitoringAcctNumber(string acctNum)
    {
        Session["MAN"] = acctNum;
    }

成功创建会话变量。 在我的工作流程的后期,在一个完全独立/不同的控制器中,我尝试访问这个相同的变量:

.Configure(job, type, "sent", licenseStamp, EmployeeSignatureKey, Session["MAN"].ToString());

但每次该会话变量为 NULL 时。 我试图了解如何在 MVC 中保留会话变量,因为显然 ASP.NET Web 表单中的相同规则在这里不适用。 此外,保存 Session 变量然后尝试访问 Session 变量的这些操作必须存在于不同的控制器上,因此我绝对必须找到一种方法来保留该变量。

任何建议不胜感激。

如何在 ASP MVC 中使用和保留会话变量

您正在尝试在 MVC 上下文中使用网络表单心态,这根本行不通......

您很少需要在 MVC 中"持久化"变量,就像使用视图状态/会话在 Web 窗体中所做的那样。在 MVC 中,它通常是通过使用强类型视图来完成的,并将模型的实例传递到视图中,从而从那里访问变量。

在极少数情况下,您可以使用TempData/ViewData/Session,但实际上不建议将其用于您正在做的事情。

我建议您阅读有关MVC以及如何使用强类型视图的更多信息。此链接是一个良好的开端。