如何将列表从一个页面传递到另一个页面。

How to pass a List from one page to another.

我遇到了这个问题,我很困惑。我能够传递和接收单个对象,但如果我尝试传递列表,数据不会转到第二页。

这是我的订单列表页面

  [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.  
}

我做错了什么?

您不能将复杂对象作为路线数据传递。路由数据功能仅支持简单对象,如 intstring。如果要跨请求保留更复杂的对象,则需要使用 Sessions 或 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