如何在MVC应用程序的各种控制器之间共享公共数据结构

时间:2013-01-03 13:11:39

标签: asp.net-mvc-4

我有一个带有多个控制器和视图的应用程序。当用户浏览各种视觉和控制器时,我需要记录导航历史以用于后向跟踪目的。为此,当我从控制器移动到控制器时,我决定使用堆栈来推送和弹出导航历史记录。问题是在尝试了很多像

这样的东西之后
static class with static properties, HttpContext.Applicaion property,
HttpContext.Cache property  and also the HttContext.Current.Session property

但每次我从控制器移动到控制器时,这些属性都会无效,并且在每种情况下都会创建一个新实例。(从控制器到控制器,我正在使用 RedirectToAction()方法

我需要的是整个应用程序中可用的堆栈,我可以从不同的控制器使用它来获取或设置导航信息。

2 个答案:

答案 0 :(得分:0)

ASP.NET MVC实际上是状态较少。

但是,在您的情况下,在会话中存储导航历史记录可能非常合适。

您不希望导航历史记录存储在HttpContext.Application中,因为历史记录将存储在应用程序级别。这意味着如果要在视图中显示该数据,则所有用户都可以访问此数据。我认为在您的情况下,您有兴趣单独存储每个用户的导航信息。这就是为什么最好使用Session。

答案 1 :(得分:0)

为此我会使用某种数据库,SQL或noSQL。它比使用Session更可靠,特别是如果您需要支持负载平衡。