无法将 id 传递给控制器

Can't pass id to controller

我认为有这个

@Html.ActionLink("Lock", "Locked", new { id = item.Id })

我也用

测试过
@Html.ActionLink("Lock", "Locked", new { id = item.Id }, FormMethod.Post)

这在我的控制器中

[HttpPost, ActionName("Locked")]
public async Task<ActionResult> Locked(string userId)
{
    var locked = UserManager.IsLockedOutAsync(userId);
    if (false)
    {
        UserManager.SetLockoutEnabled(userId, true);
    }
    else
    {
        UserManager.SetLockoutEnabled(userId, false);
    }
    return View();
}

如果我将鼠标悬停在 link 锁上,我的 view/link 中就有一个 ID。但是如果我在控制器中调试我的应用程序,字符串 userId 是 "Null".

我的目标是将 userId 发送到控制器。查找用户是否在数据库中被锁定。如果用户被锁定,则解锁用户。如果用户未被锁定,那么我应该锁定用户。 Lock 在数据库中是真假,我使用 asp.net Identity 和列 LockoutEnabled

当您的 Action 方法需要参数 userId 时,您正在发布参数 id。因此它将导致 null,因为 Action 方法签名上没有匹配的参数。

使用这个:

@Html.ActionLink("Lock", "Locked", new { userId = item.Id })