无法将 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 })
我认为有这个
@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 })