Как передать список с одной страницы на другую. - PullRequest
0 голосов
/ 09 ноября 2018

У меня проблема, и я в тупике. Я могу передать и получить один объект, но если я пытаюсь передать список, данные не переходят на вторую страницу.

Вот моя страница OrderList

  [BindProperty]
    public IList<Orders> Orders{ get; set; }
 public ActionResult OnPost()
        {
//get modified data. 
var orderList = Orders
 return RedirectToPage("/ConvertToCsv", orderList );
       }

on my ConvertToCsv page. 
  public void OnGet(IList<Orders> orderList )
        {
//do something with list. 
}

But the orderlist on OnGet is null. 
I tested by passing a single record like
 public ActionResult OnPost()
        {

 return RedirectToPage("/ConvertToCsv", new{orderId= "test"});
       }

  public void OnGet(string orderId )
        {
//This works.  
}

Что я делаю не так?

1 Ответ

0 голосов
/ 09 ноября 2018

Вы не можете передавать сложные объекты в качестве данных маршрута. Функция данных маршрута поддерживает только простые объекты, такие как int и string. Если вы хотите сохранить более сложные объекты в запросах, вам нужно использовать Sessions или TempData (поддерживаемые состоянием сеанса).

TempData, вероятно, является лучшим вариантом в этом случае, потому что элемент удаляется из памяти при доступе к нему.

Дальнейшее чтение:

TempData: https://www.learnrazorpages.com/razor-pages/tempdata
Сессии: https://www.learnrazorpages.com/razor-pages/session-state
Государственное управление в Razor Pages: https://www.learnrazorpages.com/razor-pages/state-management

...