在我的观点中有这个
@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
答案 0 :(得分:3)
当您的Action方法期望参数id
时,您正在发布参数userId
。因此,它将导致null
,因为Action方法签名上没有匹配的参数。
使用此:
@Html.ActionLink("Lock", "Locked", new { userId = item.Id })