将用户相关数据传递给 ASP.NET MVC 4 中的视图
Posted
技术标签:
【中文标题】将用户相关数据传递给 ASP.NET MVC 4 中的视图【英文标题】:Passing user related data to a view in ASP.NET MVC 4 【发布时间】:2013-12-17 13:26:57 【问题描述】:在我的模型、视图、控制器和 LocalDb 的这张图片中,目前,我可以获得登录人的用户名以显示在管理页面上,但该数据来自 IPrincipal 而不是来自控制器(我认为),我不确定它是如何工作的。如果 Roland 当前已登录,我想将 Roland 的姓氏(例如)传递到我的“管理”视图。您将如何做?
【问题讨论】:
【参考方案1】:我目前正在开发一个企业系统并且遇到了同样的问题。考虑到您使用的是身份验证框架,您只能访问当前登录的用户 ID 和状态,而不是其他信息(如果我错了,请纠正我)。 我的解决方法是将会话中的其他相关信息(在我的情况下为用户名、id、配置文件)管理为“会话常量”。请注意在用户注销时删除此信息。代码:会话[EnumSessionConsts.CurrentUserConst] = usr;其中 usr 是具有所需信息的数据类型,而 EnumSessionConsts 包含变量的名称为 const(不进行硬编码)。然后,在控制器(或视图)中,您将能够访问它。 再次!不要忘记删除此信息。 希望这可以帮助!对不起我的英语。
【讨论】:
感谢您的回答。我以前没有使用过会话,所以我需要一些时间来尝试一下:)。【参考方案2】:这很简单。在会话中保存对象:
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 登录后设置您已记录的用户数据(请注意,您始终可以在会话中保存对象)。
【讨论】:
为 m8 的帮助干杯! :D以上是关于将用户相关数据传递给 ASP.NET MVC 4 中的视图的主要内容,如果未能解决你的问题,请参考以下文章