У меня есть следующие методы действия:Передача данных между методами действий ASP.NET
[HttpGet]
public ActionResult DBLookupIndex(DBLookupDTO dto)
{
dto.Areas = _ph.GetProfiles();
return View(dto);
}
[HttpGet]
public ActionResult Search(DBLookupDTO dto)
{
dto.Orders = _oh.GetOrders(dto.OrderNumber, dto.ProductNumber, dto.DateRange, dto.SelectDeleted, dto.AreaId);
return RedirectToAction("DBLookupIndex", dto);
}
Простой пользователь вводит действительную информацию в одну или несколько текстовых полей на веб-странице, и передает его в контроллер, нажав Отправить. Затем это вызывает Поиск -action. Отладка, я определил, что функция работает. Он находит то, что должен, но не передается, когда перенаправляет обратно на DBLookupIndex -action.
Мой вопрос: Что я делаю неправильно? Я видел примеры кода, аналогичные приведенным выше, как решения для подобных проблем, но по какой-то причине это не работает для меня.
EDIT:
я понял, после того, как пришел первый ответ, что мне не хватает какой-то информации. Всякий раз, когда страница загружается, она должна обновлять раскрывающееся меню, которое отображается в представлении, в случае добавления новых профилей/областей. Я делаю это с бритвой:
<select name="AreaId" asp-for="AreaId" class="form-control">
<option disabled selected value=""> -- Vælg et område -- </option>
@foreach (var a in Model.Areas)
{
<option value="@a.ProfileId">@a.Name</option>
}
Вот почему я должен использоваться RedirectToAction, вместо того, чтобы новое действие оказывают такое же мнение. Разве есть лучший способ сделать это? :)
Заранее благодарим за любую помощь!
Теоретически это похоже на путь, но проблема в том, что мой метод GetOrder() возвращает список (список заказов). Я быстро пытаюсь Google, но не смог найти решение этой проблемы (по крайней мере, я не мог понять с моим текущим уровнем навыков программирования). Может, у вас есть предложение? Спасибо, что помог btw! –
Вы должны просто иметь возможность хранить объект напрямую, а затем бросать его на выход (см. Мой обновленный ответ). В качестве альтернативы вы можете сериализовать/десериализировать его в/из JSON, как предложено [здесь] (http://stackoverflow.com/questions/34638823/store-complex-object-in-tempdata-in-mvc-6) –
Спасибо большое за Помогите! ... и спасибо за ссылки. Я никогда не использовал TempData раньше, потому что я не знал, как правильно его использовать, но теперь я больше понимаю, как это работает. И вы, и Питер пришли с твердыми (и работающими) решениями моей проблемы, поэтому я попытаюсь выяснить, какой из них я буду использовать. Спасибо, что нашли время, чтобы помочь мне :) –