Передать список из представления в контроллер

У меня есть этот контроллер, который создает список, где T — это модель класса, называемая GamingEvents.

    public async Task<IActionResult> Index(DateTime start, DateTime end)
    {
        List<GamingEvents> gamingEventsListings = await sg.GenerateGameEventsSchedule();

        ViewData["RangeStart"] = start;
        ViewData["RangeEnd"] = end;

        return View(gamingEventsListings);
    }

На мой взгляд, я создаю эту таблицу для отображения данных:

    @model List<GameManager.Models.GamingEvents>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.GameId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.GameName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.DayNames)
            </td>
        </tr>
    }

Теперь я хочу отправить все эти данные на другой контроллер. Итак, я сделал эту форму:

<form asp-controller = "Scheduling" asp-action = "ScheduleBlock" method = "post">
    <fieldset>
        <button formaction = "/Scheduling/ScheduleBlock/">Schedule Games</button>
    </fieldset>
</form>

Поэтому мне нужен метод GenerateGameEventsFromSchedule(), чтобы принимать два свойства данных, которые я передаю в представление, ViewData["RangeStart"] и ViewData["RangeEnd"].

Итак, я начал писать контроллер:

    [HttpPost]
    public async Task<IActionResult> GenerateGameEventsFromSchedule(DateTime start, DateTime end)
    {

        foreach (event in GamingEvents)
        {
            //...do this
        }

        return View();
    }

Очевидно, что он не закончен.

Моя проблема в том, как мне передать список GamingEvents из моего представления выше этому новому контроллеру, чтобы я мог выполнять дополнительную обработку каждого элемента в списке?

Спасибо!

Вы не знаете. Вы снова запрашиваете их из базы данных.

Chris Pratt 19.03.2019 16:52

@ChrisPratt, как насчет передачи двух значений даты, которые я записываю в представлении, следующим образом: @ViewData["RangeStart"] и @ViewData["RangeEnd"]? а затем передать их новому контроллеру? Спасибо!

SkyeBoniwell 19.03.2019 17:00

Ну, эти значения поступают из где-то. Если они жестко закодированы, просто используйте те же жестко закодированные значения. Если они исходят из запроса, вы должны передать их таким же образом (то есть просто добавить их в качестве параметров к ссылке, которую вы создаете на странице). Если они были установлены пользователем при отправке формы, вы можете передать их в URL-адресе ссылки или сохранить их в Session. Это действительно зависит от того, что именно вы делаете.

Chris Pratt 19.03.2019 17:48

@ChrisPratt Ну, я создал первое представление, чтобы менеджер игры мог посмотреть на сгенерированное расписание, а затем решить, хотят ли они на самом деле запланировать его ... если они это сделают, то они щелкают ссылку, и она составляет расписание того, что они видят на экране.

SkyeBoniwell 19.03.2019 18:09

Если в результате перехода по ссылке произойдет что-то атомарное, это не должно быть ссылкой. Вам нужно опубликовать форму. Запросы GET должны быть идемпотентными (т. е. вы можете вызывать их сотни раз, а состояние системы точно такое же, как при запуске).

Chris Pratt 19.03.2019 18:18

@ChrisPratt Хорошо, я отказался от идеи передать весь список. Поэтому я перефразировал свой вопрос выше. Я создал два свойства даты, которые передаются в представление. Я также создал новую форму. Но я все еще не уверен, как мне получить даты для отправки в контроллер, когда я нажимаю кнопку формы. Спасибо

SkyeBoniwell 19.03.2019 20:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
31
0

Другие вопросы по теме