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

时间:2018-11-09 18:50:47

标签: asp.net-core razor-pages

我遇到了这个问题,我很困惑。我可以传递和接收单个对象,但是如果我尝试传递列表,则数据不会进入第二页。

这是我的订单列表页面

  [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 :(得分:0)

您不能将复杂的对象作为路线数据传递。路线数据功能仅支持简单的对象,例如intstring。如果要在请求中保留更复杂的对象,则需要使用Sessions或TempData(由会话状态支持)。

在这种情况下,TempData可能是更好的选择,因为一旦您访问该项目,它就会从内存中删除。

进一步阅读:

TempData:https://www.learnrazorpages.com/razor-pages/tempdata
会话:https://www.learnrazorpages.com/razor-pages/session-state
剃刀页面中的状态管理:https://www.learnrazorpages.com/razor-pages/state-management