【发布时间】:2017-08-03 21:09:20
【问题描述】:
我有 asp-route-id 在一个实例中工作:
它使用这样的锚标记工作:
<a id="editModal" data-toggle="modal" data-target="#modal_box"
class="btn btn-sm btn-primary"
asp-action="Edit" asp-route-id="@user.Id">Edit</a>
并像这样收到:
public async Task<PartialViewResult> DeleteConfirm(string Id) =>
PartialView("_DeleteConfirm", await _userManager.FindByIdAsync(Id));
此方法接收正确的 id。
下一个示例在表单标签中具有如下所示的路由 ID:
<div class="modal-footer">
<form asp-controller="Account" asp-action="Delete" asp-route-id="@Model.Id" method="post">
<button type="submit" class="btn btn-primary"
asp-action="Delete">Yes - Delete this User</button>
<a asp-action="Index" class="btn btn-default">Cancel</a>
</form>
</div>
我正在尝试在这里接收 ID:
[HttpPost]
public async Task<IActionResult> Delete(string Id)
{
AppUser user = await _userManager.FindByIdAsync(Id);
if (user != null)
{
IdentityResult result = await _userManager.DeleteAsync(user);
if (result.Succeeded)
{
return RedirectToAction("Index");
}
else
{
AddErrorsFromResult(result);
}
}
else
{
ModelState.AddModelError("", "User Not Found");
}
return View("Index", _userManager.Users);
}
但在这种情况下,参数为空。
它应该从 from 标签开始工作。我从 Adam Freemans APress MVC Core 书中的第一个 Identity Chapter 中得到了这个,当我为那个例子输入它时它就起作用了。
【问题讨论】:
-
您是否检查了 HTML 中生成的表单?操作 URL 错误或模型绑定不起作用。通常,该参数将被称为
id而不是Id。 -
很好的命名约定。谢谢。不过仍在尝试修复。
标签: asp.net-mvc asp.net-core tag-helpers