我遇到了这个问题,我很困惑。我可以传递和接收单个对象,但是如果我尝试传递列表,则数据不会进入第二页。
这是我的订单列表页面
[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.
}
我在做什么错?
答案 0 :(得分:0)
您不能将复杂的对象作为路线数据传递。路线数据功能仅支持简单的对象,例如int
和string
。如果要在请求中保留更复杂的对象,则需要使用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