1

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

static class with static properties, HttpContext.Applicaion property,
HttpContext.Cache property  and also the HttContext.Current.Session property

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

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

4

2 回答 2

0

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

于 2013-01-04T06:25:09.343 回答
0

ASP.NET MVC 实际上是无状态的。

但是,在您的情况下,将导航历史记录存储在 Session 中可能是一个不错的选择。

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

于 2013-01-03T13:59:09.087 回答