2013-12-16 3 views
2

나는 asp.net mvc4 웹 응용 프로그램을 만들고 있습니다. 내 컨트롤러에서 사용자로부터 피드백을 보내는 연락 양식 기능을 작성했습니다. System.Net.Mail 클래스를 사용하고 있습니다.ASP.NET MVC4 로그인 한 사용자의 이메일을 받으십시오

Simplemembership을 사용 중이며 UserProfile을 string Email 속성으로 확장했습니다.

로그인 한 사용자에게 이메일 보내기? 나는 그것이 메시지를 보냈다 그것을 포함하고 싶다. 그래서 나는 대답 할 수 있었다.

내가 사용하려고 :

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에서 오류가 발생했습니다 : 암시 적으로 'string'유형을 'bool'으로 변환 할 수 없습니다. 내가 놓친 게 있니? – user2962215

+0

좋아, 그냥 내 문자열을 변경 이메일 = em.ToString(); 전자 메일로 보내기 = em.First(); 작동합니다. 고마워요! :) – user2962215

0

당신은 이미 정확한 답을 가지고 있으므로, 나는 더 짧은 구문을 보려는 미래의 수색자를 위해 여기에 올려 놓을 것입니다.

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

그러나 시나리오에, 나는 User11위한 User1 수신 이메일에 대해 우려 할 것이다. 이 문제를 방지하려면 검색어에 더 구체적이어야합니다.

string email = db.UserProfiles 
      .FirstOrDefault(a => a.UserName == User.Identity.Name).Email; 
관련 문제