Ich habe asp-route-ID in einem Fall arbeiten:Warum funktioniert asp-route-id nicht in meinem Formularpost?
Es ist aus einem Anker-Tag wie folgt funktioniert:
<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>
und wird wie folgt erhalten:
public async Task<PartialViewResult> DeleteConfirm(string Id) =>
PartialView("_DeleteConfirm", await _userManager.FindByIdAsync(Id));
Diese Methode erhält die richtige ID
Das nächste Beispiel hat die Route-ID in der Form Tag wie folgt:
<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>
und ich versuche, die Id hier zu erhalten:
[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);
}
Aber in diesem Fall ist der Parameter kommt in Null.
Es sollte vom from-Tag funktionieren. Ich habe das aus dem ersten Identity Chapter in Adam Freemans APress MVC Core Book bekommen und es funktionierte, als ich es für dieses Beispiel eintippte.
Haben Sie das Formular überprüfen, die in der generiert wurde HTML? Entweder ist die Aktions-URL dort falsch oder die Modellbindung funktioniert nicht. Normalerweise würde der Parameter "id" anstatt "Id" heißen. – juunas
guten Ruf auf Namenskonvention. Vielen Dank. Versuche immer noch zu reparieren. – Sam