无法将id传递给控制器

时间:2016-02-01 12:52:56

标签: c# asp.net asp.net-mvc-4 asp.net-identity

在我的观点中有这个

@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();
}

如果我悬停链接锁,我的视图/链接中有一个ID。但是如果我在控制器中调试我的应用程序,则字符串userId为“Null”。

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

1 个答案:

答案 0 :(得分:3)

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

使用此:

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