1

我正在使用一个 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());

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

任何建议表示赞赏。

4

1 回答 1

3

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

您很少需要在 MVC 中“持久化”变量,就像在 web 表单中使用 viewstate/session 一样。在 MVC 中,它通常通过使用强类型视图并将模型的实例传递到视图中来完成,从而从那里访问变量。

在极少数情况下,您可以使用 TempData/ViewData/Session,但实际上不建议您这样做。

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

于 2013-10-08T21:47:53.177 回答