我正在开发一个项目,我需要根据已登录用户的个人资料构建菜单列表。但是,目前我必须在每次加载页面时构建此列表,这对我的项目来说不太好。
我想要做的是仅在用户登录时获取此列表,并在每次需要时使用它。我的想法是在用户登录时将此列表存储在Session
中。但我知道会话不是一个好习惯。
我已尝试在OutputCache
中使用会话,Cookie和ActionResult
,但只有会话有效。
有没有办法将我的列表存储在"全局变量"或类似的东西中,并且总是需要它使用它?
答案 0 :(得分:2)
我可以为你提出两个选择。
与菜单相关的对象应该只为用户创建一次(您可以在登录期间创建它)。
答案 1 :(得分:1)
我会在创建/更改配置文件时创建一个存储构建列表的数据库(可能就像JSON字符串一样简单吗?)。用户ID引用。
然后只需一个用一个用户id值选择它的情况 - 一个简单的数据类型可以得到一个复杂的数据类型。
答案 2 :(得分:0)
感谢您的帮助。
要解决我的问题,我必须使用会话。为什么?因为每个用户都有他自己的'(SidebarViewModel)会话["侧边栏"]'其中包含所有特定菜单,名称,ID和头像。
我试图使用" OutputCache" (我自己的属性类),但由于我的菜单是一个ChildAction,我在注销时无法清除缓存,对于可以在他想要的时候更改自己的头像的用户来说这不太好。我也尝试使用该应用程序,但几乎与Sessions的情况相同。
PS:我不喜欢Sessions,但我认为这是目前最好的方式。