【发布时间】:2017-11-08 02:22:08
【问题描述】:
我有一个为每个新注册用户生成和更新的 UserProfile 类。在布局页面中存储/缓存该对象的正确技术是什么,以便在用户登录并通过身份验证后每次加载新页面时都可以使用它?
我目前正在将其加载到模型中
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (User.Identity.IsAuthenticated)
{
var lvm = new LayoutViewModel { AppUserId = User.Identity.GetUserId() };
lvm.LoggedInUserProfile =
MyProject.UserService.UserHelpers.GetProfileForLoggedInUser(lvm.AppUserId);
var iconSource = string.Empty; //= ConfigurationHelpers.UserIcons.FemaleUserIconSource;//var profile = MyProject.UserService.UserHelpers.GetUserProfileIncluding(User.Identity.GetUserId());
if (lvm.LoggedInUserProfile != null)
{
if (lvm.LoggedInUserProfile.AvatarUrl != null)
{
iconSource = lvm.LoggedInUserProfile.Gender == Gender.Female ? ConfigurationHelpers.UserIcons.FemaleUserIconSource : ConfigurationHelpers.UserIcons.MaleUserIconSource;
}
iconSource = lvm.LoggedInUserProfile.AvatarUrl;
}
if (lvm.LoggedInUserProfile != null) ViewData.Add("FullName", lvm.LoggedInUserProfile.FirstName);
ViewData.Add("IconSource", iconSource);
ViewData.Add("ViewModel", lvm);
}
base.OnActionExecuted(filterContext);
}
但这似乎运行了几十次,似乎很浪费。
【问题讨论】:
-
你可以试试会话
-
@codelover...在 MVC5 中?我认为这是一个网络表单的事情
-
@dinotom Session 在 MVC 中也有。
-
@codelover - 会话是not recommended for user profile data。
-
@NightOwl888...为什么不呢?谷歌搜索显示 Session 为有效用法的大多数答案。
标签: c# asp.net-mvc caching asp.net-mvc-5