У меня есть этот контроллер, который создает список, где 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 из моего представления выше этому новому контроллеру, чтобы я мог выполнять дополнительную обработку каждого элемента в списке?
Спасибо!
@ChrisPratt, как насчет передачи двух значений даты, которые я записываю в представлении, следующим образом: @ViewData["RangeStart"] и @ViewData["RangeEnd"]? а затем передать их новому контроллеру? Спасибо!
Ну, эти значения поступают из где-то. Если они жестко закодированы, просто используйте те же жестко закодированные значения. Если они исходят из запроса, вы должны передать их таким же образом (то есть просто добавить их в качестве параметров к ссылке, которую вы создаете на странице). Если они были установлены пользователем при отправке формы, вы можете передать их в URL-адресе ссылки или сохранить их в Session. Это действительно зависит от того, что именно вы делаете.
@ChrisPratt Ну, я создал первое представление, чтобы менеджер игры мог посмотреть на сгенерированное расписание, а затем решить, хотят ли они на самом деле запланировать его ... если они это сделают, то они щелкают ссылку, и она составляет расписание того, что они видят на экране.
Если в результате перехода по ссылке произойдет что-то атомарное, это не должно быть ссылкой. Вам нужно опубликовать форму. Запросы GET должны быть идемпотентными (т. е. вы можете вызывать их сотни раз, а состояние системы точно такое же, как при запуске).
@ChrisPratt Хорошо, я отказался от идеи передать весь список. Поэтому я перефразировал свой вопрос выше. Я создал два свойства даты, которые передаются в представление. Я также создал новую форму. Но я все еще не уверен, как мне получить даты для отправки в контроллер, когда я нажимаю кнопку формы. Спасибо





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