我有一个带有多个控制器和视图的应用程序。当用户浏览各种视觉和控制器时,我需要记录导航历史以用于后向跟踪目的。为此,当我从控制器移动到控制器时,我决定使用堆栈来推送和弹出导航历史记录。问题是在尝试了很多像
这样的东西之后static class with static properties, HttpContext.Applicaion property,
HttpContext.Cache property and also the HttContext.Current.Session property
但每次我从控制器移动到控制器时,这些属性都会无效,并且在每种情况下都会创建一个新实例。(从控制器到控制器,我正在使用 RedirectToAction()方法
我需要的是整个应用程序中可用的堆栈,我可以从不同的控制器使用它来获取或设置导航信息。
答案 0 :(得分:0)
ASP.NET MVC实际上是状态较少。
但是,在您的情况下,在会话中存储导航历史记录可能非常合适。
您不希望导航历史记录存储在HttpContext.Application中,因为历史记录将存储在应用程序级别。这意味着如果要在视图中显示该数据,则所有用户都可以访问此数据。我认为在您的情况下,您有兴趣单独存储每个用户的导航信息。这就是为什么最好使用Session。
答案 1 :(得分:0)
为此我会使用某种数据库,SQL或noSQL。它比使用Session更可靠,特别是如果您需要支持负载平衡。