Как создать в цикле 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 шт):

Автор решения: Igor

Они должны быть в одной форме, как и кнопка submit.

@using (Html.BeginForm("BuyDrink", "Purchase", FormMethod.Post)) {
  <table class="table">
    ...
    @foreach (DrinkModel el in Model) {
      ...
    }
  ...
  <input type="submit" value="Купить" class="button"/>
  ...
}
→ Ссылка
Автор решения: Александр Писковой

Проблема в том, что вы помещаете тег создания формы в цикл и по сути ваша программа создает просто несколько форм. Вам нужно убрать цикл и создать его уже внутри формы и поместить в него создание тегов input.

→ Ссылка