Я пытаюсь сделать MVC 5 веб-страницу Razor с таблицей в нем, Каждая строка в этой таблице содержит кнопку Удалить, которая после действия:кнопка Submit является подачи первой формы на странице
<table>
<thead>
<tr>
<th>Name</th>
.
.
.
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach(var item in Model)
{
<tr>
<td>@item.Name</td>
.
.
.
<td>
@using(Html.BeginForm("Delete", "Person", FormMethod.Post))
{
@html.AntiForgetyToken()
@html.Hidden("personId", item.PersonId)
<button type="submit" class="btn">Delete</button>
}
</td>
</tr>
}
</tbody>
</table>
И в контроллере:
public class PersonController : BaseController
{
[HttpPost, ValidateAntiForgeryToken]
public ActionResult Delete(int personId)
{
// Do Something...
}
}
Теперь моя проблема при нажатии кнопки Delete в любой строке таблицы всегда представившая первую форму на странице, которая означает, что первое лицо в таблице всегда удаляются независимо от того, какую кнопку отправки я нажимаю. Любые идеи для решения этой проблемы?
Edit: Сформированной страница HTML
<div class="page-header">
<h2>Person List</h2>
</div>
<table class="row table table-striped">
<thead>
<tr class="text-primary">
<th class="text-center">#</th>
<th>Name</th>
<th>Email</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center">5</td>
<td>Ismail</td>
<td>[email protected]</td>
<td>Active</td>
<td>
<form action="/WebApp/Person/Delete?PersonID=5" method="post">
<input name="__RequestVerificationToken" type="hidden" value="Uxhp0Bq1ATAwOXNODHmc74f12O2-dvFhQ5kletbmDkq64CEPWZlXXPKuHDoqSy4DXF6mJhYfGffc_YAn1yERxp69JCUT9IlGTKdfirvVvqE1" />
<div class="text-center">
<div class="btn-group btn-group-xs">
<a class="btn btn-default" href="/WebApp/Person/Details?PersonID=5">View</a>
<a class="btn btn-default" href="/WebApp/Person/Edit?PersonID=5">Edit</a>
<button class="btn btn-danger>Delete</button>
</div>
</div>
</form>
</td>
</tr>
<tr>
<td class="text-center">6</td>
<td>MoHaKa</td>
<td>[email protected]</td>
<td>Active</td>
<td>
<form action="/WebApp/Person/Delete?PersonID=6" method="post">
<input name="__RequestVerificationToken" type="hidden" value="R4CUAuVpbGihZvrFxxCjCL_oJ7tgkS_Xxh67i_xCpMXpvZKR5ASUWrSCvjg52yRorF-Ypeau1oZwDi96caHyUj-gmBeHnx7NBgfJBLkLPnQ1" />
<div class="text-center">
<div class="btn-group btn-group-xs">
<a class="btn btn-default" href="/WebApp/Person/Details?PersonID=6">View</a>
<a class="btn btn-default" href="/WebApp/Person/Edit?PersonID=6">Edit</a>
<button class="btn btn-danger>Delete</button>
</div>
</div>
</form>
</td>
</tr>
</tbody>
</table>
Мои глаза могут быть обманывая меня, но я не вижу 'hidden' вход для' personId', который должен быть частью полезной нагрузки POST на сгенерированной странице. – EdSF
Да, но @AlexPolyankin попросил меня удалить скрытый ввод и использовать routeValues вместо этого, он дает тот же результат, кстати – MoHaKa
Ваш 'controller' ограничен' HttpPost' (а не 'GET') - отлаживает ваш контроллер и проверяет, какое значение вы получите для параметра 'personId'). – EdSF