Как создать в цикле html-checkbox с помощью Razor?
Пытаюсь динамически создать checkbox. Код выглядит следующим образом:
@model List<BeverageMachine.Models.DrinkModel>
<table class="table">
<thead>
<tr>
<th scope="col">Id</th>
</tr>
</thead>
@foreach (DrinkModel el in Model)
{
<tbody>
<tr>
@using (Html.BeginForm("BuyDrink", "Purchase", FormMethod.Post))
{
<input name="elem" type="checkbox" indeterminate="true" value="@el.Id"/>
<p>@el.Id</p>
}
</tr>
</tbody>
}
}
</table>
<div>
<input type="submit" value="Купить" class="button"/>
</div>
По сути у меня должно получится три чекбокса (три элемента) с id каждого товара, при нажатии на которые могут быть выбрано несколько элементов, Id которых передастся в контроллер для дальнейших действий:
[HttpPost]
public void BuyDrink(List<string> elem)
{
}
Однако Id передается только при выборе первого элемента:
То есть если я выбираю первый элемент, то его Id передается, а если другие, то список пуст.Если выбираю несколько, включая самый первый элемент в списке, то передается опять только он один, а остальные нет. Не могли бы вы подсказать, как решить эту проблему? Вероятно, динамически создавать его необходимо другим способом, ибо как будто запоминается только первое значение checkbox, которое первое обрабатывается в цикле. Заранее спасибо
Ответы (2 шт):
Они должны быть в одной форме, как и кнопка submit.
@using (Html.BeginForm("BuyDrink", "Purchase", FormMethod.Post)) {
<table class="table">
...
@foreach (DrinkModel el in Model) {
...
}
...
<input type="submit" value="Купить" class="button"/>
...
}
Проблема в том, что вы помещаете тег создания формы в цикл и по сути ваша программа создает просто несколько форм. Вам нужно убрать цикл и создать его уже внутри формы и поместить в него создание тегов input.
