2016-10-04 11 views
0

メッセージ用のテーブルとメッセージビュー用のテーブルがあります。私は個々のユーザーに未読のメッセージを表示しようとしています。メッセージテーブルでは、現在のメッセージにメッセージビューが存在するかどうかを調べる新しいフィールドを送信しました。そうであれば、Viewed boolはtrueを返し、falseを返します(メッセージを表示していない場合)。すべて正常に動作しますが、User.Identity.GetUser()を使用して現在ログインしているユーザーを通常通り見つけることができません。私も正しい使用法を追加しました。このタイプの呼び出しを制限するためのモデルには、いくつかの制限があります。その場合、モデル内の現在のユーザーを検索するにはどうすればよいですか?解決済みモデル内の現在のユーザーを見つける方法asp.net mvc

public bool Viewed 
    { 
     get 
     { 
      ApplicationDbContext db = new ApplicationDbContext(); 
      //var _userId = User.Identity.GetUserId(); 
      var _userId = Thread.CurrentPrincipal.Identity.GetUserId(); 
      List<MessageView> m_List = db.MessageView.Where(u => u.UserId == _userId && u.MessageId == O_MessageId).ToList(); 
      var count = m_List.Count(); 
      if (count >= 1) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 

     } 
    } 

:コントローラの外であなたはこれで、現在のユーザーを見つけることができます -

VARを_userId = System.Web.HttpContext.Current.User.Identity.GetUserId();

+1

非同期メソッドを使用していますか?私たちがあなたを助けることができるかどうかを知るためにあなたのコードのいくつかを見せてもらえますか? –

+0

'Thread.CurrentPrincipal.Identity.GetUserId()'を試してください – GauravKP

+0

スレッドが現在のコンテキストに存在しないというエラーが表示されます。私は上記のチェックを追加しました。 – DudeThatCodes

答えて

0

コントローラの外では、これで現在のユーザーを見つけることができます。 var _userId = System.Web.HttpContext.Current.User.Identity.GetUserId();

+0

Microsoft.AspNet.Identityを使用するのを忘れないでください。 – Kyle

関連する問題