Как передать несколько параметров флажка из foreach - PullRequest
0 голосов
/ 29 января 2019

У меня есть форма в моем представлении с таблицей, и в каждой ячейке у меня есть флажок.У меня уже есть отдельные идентификаторы для каждого флажка, но я не знаю, как передать их индивидуально в действие контроллера.Я знаю, как передавать отдельные параметры через атрибут «name», но я не уверен, как обрабатывать его с таким количеством различных флажков.

Просмотр

@{
     bool IsOwnRegistration = false;
     foreach (var item in Model.Events.Where(i => i.UserId == Model.UserID && Convert.ToDateTime(i.Date) > dateTime))
     {
       if (item.HasCreatedOtherUsers == null)
       {
         IsOwnRegistration = true;
       }
       string Surname = "";
       string Lastname = "";
       <tr>
           @{
             foreach (var Useritem in Model.Users.Where(i => i.UserId == item.HasCreatedOtherUsers))
             {
               Surname = Useritem.Vorname;
               Lastname = Useritem.Nachname;
             }
             if (IsOwnRegistration == true)
             {
               <th style="background-color:grey; width:33%;">
                 Meine Reservation
               </th>
               <th style="width:33%;">@item.Date</th>
               <th style="width:33%;">
                 <div class="custom-control custom-checkbox ">
                   <input type="checkbox" class="custom-control-input" name="@item.EventId" id="@item.Date@item.EventId">
                   <label class="custom-control-label" for="@item.Date@item.EventId"><i style="color:red;" class="fas fa-trash-alt"></i> 
                   </label>
                 </div>
               </th>
             }
             else
             {
               <th style="width:33%;">@Surname @Lastname</th>
               <th style="width:33%;">@item.Date</th>
               <th style="width:33%;">
                 <div class="custom-control custom-checkbox ">
                   <input type="checkbox" class="custom-control-input" name="@item.EventId" id="@item.Date@item.EventId">
                   <label class="custom-control-label" for="@item.Date@item.EventId"><i style="color:red;" class="fas fa-trash-alt"></i> 
                   </label>
                 </div>
               </th>
             }
           }

Контроллер

public ActionResult DeleteRegistrations(Need to get values of all checkboxes) 
{
  return RedirectToAction("HomePage");
}

1 Ответ

0 голосов
/ 29 января 2019

Чтобы передать выбранные флажки в метод действия, флажки должны иметь общее имя, соответствующее имени параметра метода действия.В следующем примере показано представление Razor, в котором перечислены некоторые строки в таблице, и создан флажок для каждой строки:

@model  IEnumerable<string>
@{
    ViewBag.Title = "Home Page";
}

<div class="row">
    <div class="col-md-12">
        @using (Html.BeginForm("Index", "Home", FormMethod.Post))
        {
            <table>
                @foreach (var s in Model)
                {
                    <tr>
                        <td>
                            <input type="checkbox" name="selectedValues" value="@s" id="@s" />
                            <label for="@s">@s</label>
                        </td>
                    </tr>
                }
            </table>
            <input type="submit" />
        }
    </div>
</div>

Обратите внимание, что для атрибута name флажков установлено значение selectedValues,Атрибут value устанавливается на исходную строку (или идентификатор в более сложном сценарии).

Форма отправляется с помощью запроса POST для следующего метода действия:

[HttpPost]
public ActionResult Index(IEnumerable<string> selectedValues)
{
    return View(selectedValues);
}

В запросе POST все значения всех отмеченных флажков передаются в виде пар ключ-значение в форме«имя = значение».Поскольку все флажки имеют одно и то же имя, ASP.NET MVC может десериализовать это в IEnumerable<string>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...