ASP.NET MVC4获取已登录用户的电子邮件

时间:2013-12-16 09:18:48

标签: asp.net asp.net-mvc email asp.net-mvc-4

我正在制作asp.net mvc4网络应用程序。我在我的控制器中编写了联系表单函数,用于发送用户的反馈。我正在使用System.Net.Mail类。

我正在使用Simplemembership,并使用字符串Email属性扩展了UserProfile。

如何登录用户电子邮件?我希望将它包含在已发送的消息中,所以我可以回答。

我试图使用:

var em = from m in db.UserProfiles.Where(a => a.UserName.Contains(User.Identity.Name)) select m.Email;
string email = em.ToString();

但在发送的邮件中我有:

SELECT
[Extent1].[Email] AS [Email]
FROM [dbo].[UserProfile] AS [Extent1]
WHERE [Extent1].[UserName] LIKE @p__linq__0 ESCAPE N'~'

2 个答案:

答案 0 :(得分:0)

要检索数据库的单个条目,您必须选择使用First()方法返回的第一行:

string email = db.UserProfiles
           .Where(a => a.UserName.Contains(User.Identity.Name))
           .First().Email;

希望它有所帮助!

答案 1 :(得分:0)

你已经有了正确的答案,所以我只是把它放在这里让未来的搜索者看到更短的语法。

string email = db.UserProfiles
           .FirstOrDefault(a => a.UserName.Contains(User.Identity.Name)).Email;

但是,在您的方案中,我会担心User1会收到针对User11的电子邮件。为了防止这种情况,您需要在查询中更加具体

string email = db.UserProfiles
           .FirstOrDefault(a => a.UserName == User.Identity.Name).Email;
相关问题