2012-10-10 2 views
0

현재 로그인 한 사용자의 userid를 가져 오려고합니다. 나는이를 사용하여 내 컨트롤러에서 메소드를 호출하고있어로그인 한 사용자의 userID를 얻는 방법은 무엇입니까?

public int GetUserID(string _UserName) 
    { 
     using (var context = new TourBlogEntities1()) 
     { 
      var UserID = from s in context.UserInfoes 
         where s.UserName == _UserName 
         select s.UserID; 
      return Int32.Parse(UserID.ToString()); //error is showing here 

     } 
    } 

:

public ActionResult NewPost(NewPost model) 
    { 
     var Business = new Business(); 
     var entity = new Post(); 
     entity.PostTitle = model.PostTitle; 
     entity.PostStory = model.PostStory; 
     entity.UserID = Business.GetUserID(User.Identity.Name); 



     Business.NewPost(entity); 
     Business.ViewPost(entity); 
     return View("ViewPost", model); 

    } 

오류가 "입력 문자열이 올바른 형식이 아닌"으로 표시되고 여기 내 코드입니다. 도와주세요. 감사.

답변

1

쿼리가 IEnumerable을 반환합니다. 기준에 일치하는 1 개 이상의 기록이있는 경우 .Single() 방법은 예외가 발생합니다 그런데

using (var context = new TourBlogEntities1()) 
{ 
    var userIds = from s in context.UserInfoes 
       where s.UserName == _UserName 
       select s.UserID; 
    return userIds.Single(); 
} 

: 당신은 단지 하나의 기록을 얻을 필요가있다. 다행히도 데이터베이스 내부의 Username 필드에 고유 한 제한이 있습니다.

+0

감사합니다 ... 기본으로 돌아갈 시간이 있습니다. –

+0

예, 이제 기본으로 이동할 때입니다. 이 경우 LINQ가 기본입니다. ASP.NET MVC에 들어가기 전에 먼저 그것을 배워야합니다. –

+0

나는 조금 배웠다. 그러나 이제 나는 분명히 그것을 다시 볼 것이다. 감사. –

1
CreatedBy = this.HttpContext.User.Identity.Name, 
관련 문제