【发布时间】:2020-09-08 13:53:03
【问题描述】:
我正在使用here 所述的服务器端验证。在页面的 OnGet 方法中,我使用数据库中的项目列表填充 IEnumerable。
[BindProperty]
public IEnumerable<Status> Statuses { get; set; }
public async Task<IActionResult> OnGetAsync()
{
Statuses = await _service.GetStatuses();
return Page();
}
当 ModelState.IsValid 返回 false 时,页面会重新显示,但 IEnumerable 的内容现在为零。
public async Task<IActionResult> OnPostAsync()
{
if (!ModelState.IsValid)
{
return new PageResult();
}
... Save to DB
}
如果我复制 Statues = await _service.GetStatues(); 是否有一种简单的方法来持久化 IEnumerable
感谢任何帮助。
【问题讨论】:
-
你试过“TempData”吗? @RaKer
-
@WaleedNaveed 是的,我已经尝试将列表添加到 Tempdata 但页面然后只返回 HTTP 500,但在返回 Page() 上设置断点;行,我可以看到 Tempdata 已更新 - 我是否遗漏了其他内容?
-
你能分享代码@RaKer
-
@WaleedNaveed,代码就像这个 public async Task
OnGetAsync() { Statuses = await _service.GetStatuses(); TempData["状态"] = 状态; TempData.Keep("状态");返回页面(); }