如何从ASP.NET MVC默认的成员资格模型中获取用户电子邮件地址?

12

我可以通过 User.Identity.Name 获取用户名称。那么如何获取用户的电子邮件地址呢?因为它必须被存储(在注册表单中有一个文本框)。

4个回答

18
if(User.Identity.IsAuthenticated)
{
    someLabel.Text = Membership.GetUser().Email;
}

Membership.GetUser()函数返回的是一个MembershipUser类型的对象,包含了许多有用的用户属性。


我在用户表中添加了一个自定义的出生日期字段,我该如何获取它? - Zameer Ansari

6
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,你的代码片段会抛出null引用异常。这里可能不是你想要抛出的确切异常类型。 - Ashby

2
在MVC5中,您可以使用UserManager来实现这一点,像这样:
string UserEmail = await UserManager.GetEmailAsync(User.Identity.GetUserId());

1
对于那些尚未实例化UserManager的人来说,这段代码非常方便:HttpContext.GetOwinContext().GetUserManager<YourNamespace.ApplicationUserManager>() - Vitor Canova

0

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

 string userName = Request.QueryString["username"];

     TextBoxUserID.Text = Membership.GetUser(userName).Email;

通常最好在代码中包含一个简短的解释,即使它已经很容易理解了 :P。 - Ren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接