将用户相关数据传递给 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 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

用户控件和 asp.net mvc

更新数据表中的切割行并添加新记录 ASP.NET MVC

将 JSON 数据传递给 Spring MVC 控制器

Asp.net core MVC post 参数始终为空

jQuery 将 Ajax 调用中的数据传递给 MVC 操作方法

如何使用引导程序将数据传递给模态