У меня 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));
Этот метод получает правильный идентификатор.
В следующем примере идентификатор маршрута в теге формы выглядит следующим образом:
<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>
и я пытаюсь получить идентификатор здесь:
[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);
}
Но в этом случае параметр имеет значение null.
Это должно работать из тега from. Я взял это из первой главы Identity Chapter в книге Adam Freemans APress MVC Core, и это сработало, когда я набрал его для этого примера.
id
вместоId
. - person juunas   schedule 13.03.2017