如何将列表从一个页面传递到另一个页面。
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.
}
我做错了什么?
您不能将复杂对象作为路线数据传递。路由数据功能仅支持简单对象,如 int
和 string
。如果要跨请求保留更复杂的对象,则需要使用 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
我遇到了这个问题,我很困惑。我能够传递和接收单个对象,但如果我尝试传递列表,数据不会转到第二页。
这是我的订单列表页面
[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.
}
我做错了什么?
您不能将复杂对象作为路线数据传递。路由数据功能仅支持简单对象,如 int
和 string
。如果要跨请求保留更复杂的对象,则需要使用 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