2016-10-04 85 views
0

我有一個消息表和另一個messageviews表。我正在尋找向個人用戶顯示未讀消息。通過我的消息表,我發送了一個新字段,用於查看當前消息是否存在任何消息瀏覽。如果他們這樣做,那麼我的視圖布爾應該返回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; 
      } 

     } 
    } 

解決:控制器之外你可以找到與該當前用戶 -

變種_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