如何在不通过每个视图传递模型的情况下在 MVC 应用程序中传递和存储模型?
How to pass and store a model in an MVC application without passing model through each view?
在我的应用程序中,用户将登录,在他们登录后,我需要以某种方式跟踪他们刚刚创建的会话。一旦他们登录,他们有两个选择,进入建筑物并完成登录过程或检查他们会话的设备。我需要在项目签出的应用程序中跟踪该会话。但是我不想在设备视图之前必须在每个视图中传递当前会话模型?目前我正在使用 TempData,但我觉得这是在玩火,因为我读到某个地方的临时数据在我相信两次重定向后被清除了?是否有永久的临时数据或其他我可以使用的更安全的数据?感谢您的帮助。
您可以将此数据存储为会话状态。无需将其显式传递给控制器,它是 HttpContext 的一部分,可以在任何控制器操作中访问。
MyUserContextData current = null;
// retrieve
if (HttpContext.Current != null && HttpContext.Current.Session != null) {
current = HttpContext.Current.Session["UserContextData"] as MyUserContextData;
}
// store
if (HttpContext.Current != null && HttpContext.Current.Session != null) {
HttpContext.Current.Session["UserContextData"] = current;
}
ASP.NET Session State Overview
请注意,使用会话状态可能会阻止并发请求。
在我的应用程序中,用户将登录,在他们登录后,我需要以某种方式跟踪他们刚刚创建的会话。一旦他们登录,他们有两个选择,进入建筑物并完成登录过程或检查他们会话的设备。我需要在项目签出的应用程序中跟踪该会话。但是我不想在设备视图之前必须在每个视图中传递当前会话模型?目前我正在使用 TempData,但我觉得这是在玩火,因为我读到某个地方的临时数据在我相信两次重定向后被清除了?是否有永久的临时数据或其他我可以使用的更安全的数据?感谢您的帮助。
您可以将此数据存储为会话状态。无需将其显式传递给控制器,它是 HttpContext 的一部分,可以在任何控制器操作中访问。
MyUserContextData current = null;
// retrieve
if (HttpContext.Current != null && HttpContext.Current.Session != null) {
current = HttpContext.Current.Session["UserContextData"] as MyUserContextData;
}
// store
if (HttpContext.Current != null && HttpContext.Current.Session != null) {
HttpContext.Current.Session["UserContextData"] = current;
}
ASP.NET Session State Overview
请注意,使用会话状态可能会阻止并发请求。