C# 如何在MVC中的任何类中获取用户ID?

C# 如何在MVC中的任何类中获取用户ID?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在从搜索中检索社区列表。如果当前用户尚未加入社区,我想添加一个“加入”按钮;如果当前用户已加入该社区,我想添加一个“离开”按钮。我已经创建了isMember()函数作为 public bool IsMember(string UserID, int CommunityID) { var Membership = db.Users.Include(x => x.CommunityUsers) .Where(s =>

我正在从搜索中检索社区列表。如果当前用户尚未加入社区,我想添加一个“加入”按钮;如果当前用户已加入该社区,我想添加一个“离开”按钮。我已经创建了
isMember()
函数作为

public bool IsMember(string UserID, int CommunityID)
{
    var Membership = db.Users.Include(x => x.CommunityUsers)
                             .Where(s => s.Id.Equals(UserID))
                             .Count();

    if (Membership > 0)
        return true;
    else
        return false;
}
但是我如何在搜索功能中使用它呢?我需要在此函数中传递当前用户ID,但我无法这样做。这是我的搜索功能

public ActionResult SearchCommunity(string searchString)
{
    if (!String.IsNullOrEmpty(searchString))
    {
        var UseriD = db.Users.Where(u => u.UserName == User.Identity.Name)
                             .Select(u => u.Id);

        ViewBag.communityQuery = db.Communities.Include(x => x.CommunityUsers)
                                        .Where(s => s.CommunityName.Contains(searchString))
                                        .ToList();
        ViewBag.Membership = IsMember(UseriD, ViewBag.communityQuery).ToList();

        return View();
    }

此代码将返回IEnumerable:

var UseriD = db.Users.Where(u => u.UserName == User.Identity.Name)
                     .Select(u => u.Id);
尝试使用:

var UseriD = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);

此代码将返回IEnumerable:

var UseriD = db.Users.Where(u => u.UserName == User.Identity.Name)
                     .Select(u => u.Id);
尝试使用:

var UseriD = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
您可以尝试以下代码:

var userId=User.Identity.GetUserId();
您可以尝试以下代码:

var userId=User.Identity.GetUserId();

首先需要获取当前http上下文,然后才能获取用户:

var ctx = HttpContext.Current;
ctx.User.Identity.GetUserId();
如果您在
MvcController
中,则可以使用
User
属性:

User.Identity.GetUserId();

首先需要获取当前http上下文,然后才能获取用户:

var ctx = HttpContext.Current;
ctx.User.Identity.GetUserId();
如果您在
MvcController
中,则可以使用
User
属性:

User.Identity.GetUserId();

看看我是如何从你的代码中去掉多余的空白,使它更容易阅读的?请在以后发布代码时这样做。可读性很重要,它使您更有可能收到一个好的答案。用户登录后,您是否在会话中保留userid?请参阅我如何从代码中删除多余的空白并使其更易于阅读?请在以后发布代码时这样做。可读性很重要,它使您更有可能收到一个好的答案。在用户登录后,您不在会话中保留用户ID吗?