【发布时间】:2013-12-17 13:26:57
【问题描述】:
在我的模型、视图、控制器和 LocalDb 的这张图片中,目前,我可以获得登录人的用户名以显示在管理页面上,但该数据来自 IPrincipal 而不是来自控制器(我认为),我不确定它是如何工作的。如果 Roland 当前已登录,我想将 Roland 的姓氏(例如)传递到我的“管理”视图。您将如何做?
【问题讨论】:
标签: asp.net-mvc razor view
在我的模型、视图、控制器和 LocalDb 的这张图片中,目前,我可以获得登录人的用户名以显示在管理页面上,但该数据来自 IPrincipal 而不是来自控制器(我认为),我不确定它是如何工作的。如果 Roland 当前已登录,我想将 Roland 的姓氏(例如)传递到我的“管理”视图。您将如何做?
【问题讨论】:
标签: asp.net-mvc razor view
我目前正在开发一个企业系统并且遇到了同样的问题。考虑到您使用的是身份验证框架,您只能访问当前登录的用户 ID 和状态,而不是其他信息(如果我错了,请纠正我)。 我的解决方法是将会话中的其他相关信息(在我的情况下为用户名、id、配置文件)管理为“会话常量”。请注意在用户注销时删除此信息。代码:会话[EnumSessionConsts.CurrentUserConst] = usr;其中 usr 是具有所需信息的数据类型,而 EnumSessionConsts 包含变量的名称为 const(不进行硬编码)。然后,在控制器(或视图)中,您将能够访问它。 再次!不要忘记删除此信息。 希望这可以帮助!对不起我的英语。
【讨论】:
这很简单。在会话中保存对象:
CurrentUserData cs = new CurrentUserData();
Session["UserData"] = cs;
从会话中检索对象:
CurrentUserData c = (CurrentUserData )Session["UserData"];
String userName = c.UserName;
String userSurname = c.UserSurname ;
(注意你应该强制转换为 CurrentUserData,Session["UserData"] 检索一个对象)。
从会话中删除对象
Session.Remove("UserData");
建议:在 Enum 中管理会话变量名称,因此您无需对其进行硬编码。 Session[EnumSessionConsts.CurrentUserConst](其中 EnumSessionConsts.CurrentUserConst == "userData")。
PD。在 ok 登录后设置您已记录的用户数据(请注意,您始终可以在会话中保存对象)。
【讨论】: