【问题标题】:Passing user related data to a view in ASP.NET MVC 4将用户相关数据传递给 ASP.NET MVC 4 中的视图
【发布时间】:2013-12-17 13:26:57
【问题描述】:

在我的模型、视图、控制器和 LocalDb 的这张图片中,目前,我可以获得登录人的用户名以显示在管理页面上,但该数据来自 IPrincipal 而不是来自控制器(我认为),我不确定它是如何工作的。如果 Roland 当前已登录,我想将 Roland 的姓氏(例如)传递到我的“管理”视图。您将如何做?

【问题讨论】:

    标签: asp.net-mvc razor view


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2011-01-13
    • 2012-09-24
    • 2013-02-15
    • 2015-01-21
    • 2020-10-24
    相关资源
    最近更新 更多