我正在使用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变量的这些操作必须存在于不同的控制器上,所以我绝对必须找到一种方法来保存该变量。
感谢任何建议。
答案 0 :(得分:3)
您正试图在MVC上下文中使用webforms心态,这根本不起作用......
通过使用viewstate / session,您很少需要像在webforms中一样“持久化”MVC中的变量。在MVC中,通常使用强类型视图并将模型实例传递给视图,从而从那里访问变量。
在极少数情况下,您可以使用TempData / ViewData / Session,但实际上并不建议您使用它。
我建议您阅读有关MVC的更多内容以及如何使用强类型视图。 This link是一个好的开始。