将用户相关数据传递到ASP.NET MVC 4中的视图

时间:2013-12-17 13:26:58

标签: asp.net-mvc razor view

I have this picture

在我的模型,视图,控制器和LocalDb的图片中,此时,我可以获取登录的人的UserName出现在管理页面上,但该数据来自IPrincipal而不是来自控制器(我想),我不确定它是如何工作的。如果Roland目前已登录,我想将Roland的LastName(例如)传递给我的Manage视图。你会怎么做呢?

2 个答案:

答案 0 :(得分:2)

我目前正在开发一个企业系统并遇到同样的问题。考虑到您使用的是auth框架,您只能访问当前登录的用户ID和状态,而不是其他信息(如果我错了,请更正我)。 我的解决方法是将会话中的其他相关信息(在我的用例中,用户名,id,profile)作为“Session const”进行管理。请注意在用户注销时删除此信息。代码:Session [EnumSessionConsts.CurrentUserConst] = usr;其中usr是带有信息需求的数据类型,EnumSessionConsts包含变量的名称为const(不用硬编码)。然后,在控制器(或视图)中,您将能够访问它。 再次!不要忘记删除这些信息。 希望这可以帮助!抱歉我的英语。

答案 1 :(得分: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");

建议:管理枚举中的会话变量名称,这样就不需要对其进行硬编码。 Session [EnumSessionConsts.CurrentUserConst](其中EnumSessionConsts.CurrentUserConst ==“userData”)。

PD。在ok登录后设置您已记录的用户数据(请注意,您始终可以在会话中保存对象)。