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

时间:2018-10-13 22:07:53

标签: c# asp.net-core-2.1 razor-pages

我有两个类似的收藏集:

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

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

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

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

根据我目前的知识,我认为我有两个选择:重定向并在查询字符串中传递数据,或将数据保存到cookie并在每次POST时重新填充。

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

1 个答案:

答案 0 :(得分:2)

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