集合可以绑定到 Razor Pages 中的页面模型吗?

Can collections be bound to the page model in Razor Pages?

我有两个集合,大致如下所示:

[BindProperty]
public List<MyObject> MyObjects { get; set; } = new List<MyObject>();
[BindProperty]
public List<MyOtherObject> MyOtherObjects { get; set; } = new List<MyOtherObject>();

所以它们绑定到服务器,但我不太确定如何将它们绑定到客户端。或者我只是做错了。列表在页面加载时添加到 HTML table,但没有直接绑定:

@foreach (var item in Model.MyObjects)
{
    <tr>
        <td>
            Title
        </td>
        <td>
            @Html.DisplayFor(m => item.Property)
        </td>
    </tr>
}

问题是我需要 POST 到服务器以在不同点向每个列表添加项目。当我这样做时,我只是 return Page();。我没有重定向,因为此时,没有任何内容被保存到数据库中,并且表单不完整。

据我目前所知,我认为我有两个选择:重定向并传递查询字符串中的数据,或者将数据保存到 cookie 并在每个 POST.

时重新填充

两者都不是很好的选择。有更好的方法吗?

模型绑定旨在处理表单值。如果您不从服务器上的持久数据重新填充您的集合,您需要为每个项目添加表单字段以使模型绑定工作。如果您正在创建一个多步骤的、类似于向导的表单,您通常会将每个步骤中未保存的值从一个步骤保存到下一个隐藏字段中。