2013-12-16 152 views
2

我正在製作asp.net mvc4 web應用程序。我在我的控制器中編寫了聯繫表單功能,它發送用戶的反饋。我正在使用System.Net.Mail類。ASP.NET MVC4獲取登錄用戶的電子郵件

我正在使用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'~' 

回答

0

檢索數據庫中的一個條目,您必須選擇與返回的第一行First()方法:

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

希望它有幫助!

+0

在m.Email我得到錯誤:不能隱式地將類型'字符串'轉換爲'布爾'。我想念什麼? – user2962215

+0

好吧,我只是改變我的字符串電子郵件= em.ToString(); to string email = em.First();它的工作原理。非常感謝! :) – user2962215

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; 
相關問題