【问题标题】:How to get user email address from ASP.NET MVC Default Mempership Model?如何从 ASP.NET MVC 默认会员模型中获取用户电子邮件地址?
【发布时间】:2010-09-21 15:10:38
【问题描述】:

我可以得到用户名:User.Identity.Name。由于必须存储用户的电子邮件地址(在注册表中有一个文本框),我如何获取用户的电子邮件地址?

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:
    if(User.Identity.IsAuthenticated)
    {
        someLabel.Text = Membership.GetUser().Email;
    }
    

    Membership.GetUser() 函数产生了许多有用的用户属性。它返回一个MembershipUser 类型的对象。

    【讨论】:

    • 我在用户表中添加了一个自定义的 DOB 字段,如何获取?
    【解决方案2】:
    protected string GetEmailAddress()
    {
        MembershipUser currUser = null;
        if (HttpContext.Current.User != null)
        {   
            currUser = Membership.GetUser(true);
            return currUser.Email; 
        }   
        return currUser.Email;
    }
    

    【讨论】:

    • 与该方法类似,尽管如果 HttpContext.Current.User == null,您的代码 sn-p 实际上会引发空引用异常。可能不是您想在此处抛出的确切异常类型。
    【解决方案3】:

    在 MVC5 上,您可以使用 UserManager,如下所示:

    string UserEmail = await UserManager.GetEmailAsync(User.Identity.GetUserId());
    

    【讨论】:

    • 对于那些没有 UserManager 已经实例化的人来说,这段代码很方便:HttpContext.GetOwinContext().GetUserManager<YourNamespace.ApplicationUserManager>()
    【解决方案4】:

    或者如果信息来自页面外部,您可以这样做。

     string userName = Request.QueryString["username"];
    
         TextBoxUserID.Text = Membership.GetUser(userName).Email;
    

    【讨论】:

    • 最好包含一个简短的说明,说明您的代码如何解决问题,即使它非常不言自明:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多