Как вернуть в контроллер IEnumerable значений, выбранных в представлении из списка - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть представление, которое просто выполняет цикл foreach для IEnumerable, переданного в viewmodel, у меня есть способ, которым люди могут выбрать эти объекты в списке (применить к ним класс, чтобы выделить), и в настоящее время это работает длянекоторая клиентская печать через jquery.Есть ли способ, которым я могу получить эти сущности (персонал), которые имеют класс выделения, и отправить их обратно в качестве модели на контроллер?

Я попытался использовать html.hiddenfor и просто поместить туда весь персонали создание формы с asp-действием моей функции на контроллере и просто кнопкой отправки, это не сработало

контроллер содержит

public IActionResult StaffSelectionAction(StaffIndexModel model)
        {
            //things to do to process the selected staff
            foreach (Staff staff in model.staff){
                //Do stuff
            }
            return RedirectToAction("Index");
        }

представление содержит

<form asp-action="StaffSelectionAction">
    @Html.HiddenFor(b => b.staff)
    <input type="submit" value="Process Staff" class="btn btn-default" asp-action="StaffSelectionAction"/>
</form>

модель содержит

public IEnumerable<Staff> staff { get; set; }

Редактировать: орфографическая ошибка в коде

1 Ответ

0 голосов
/ 05 февраля 2019

Есть несколько способов справиться с этим.

Одним из способов является создание вспомогательного класса, расширение модели Staff и добавление для него атрибута «выбираемый».Что-то вроде:

public class SelectableStaff : Staff
{
    public bool Selected {get; set;}
}

Тогда, на ваш взгляд:

@Html.CheckBoxFor(m => m.Selected)

Используя привязку модели, привязка к контроллеру с типом SelectableStaff должна затем дать вам выбранные значения, где вы можете что-то сделатькак:

   foreach (SelectableStaff staff in model.staff.Where(x => x.Selected)){
                //Do stuff
   }

Вы можете легко вернуть его в Staff, используя linq и Содержит.Кроме того, вы также можете использовать @ Html.Checkbox («myfriendlyname»), затем включить FormCollection в контроллер и извлечь переменную из него.Лично я считаю, что привязка модели менее подвержена ошибкам.

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