Blazor - 绑定到对象集合

Blazor - Binding to a collection of objects

Blazor 预览版 v9

EditForm 绑定到对象集合需要什么?当我将 EditForm 设置为对象集合时,公开并绑定它们的 bool 属性,当您单击复选框时,它们会立即取消选中。

@page "/sompage"

<EditForm Model="MyModel">
    @foreach(var item in MyModel.Items)
    {
        <label>
        <InputCheckbox @bind-Value="item.BoolProperty" />
        @item.Text</label>
    }
</EditForm>

@code
{
    public class SomeModel
    {
        public IEnumerable<SomeItem> Items { get;set; } = new List<SomeItem>();
    }
    public class SomeItem
    {
        public string Text { get;set; }
        public bool BoolProperty { get;set; }
    }
}

与 ASP.NET 绑定非常相似的解决方案是公开可变集合。由于我最初将 Items 公开为 IEnumerable<SomeItem>,Blazor 的绑定魔法无法更新目标集合。

改变 Items List<SomeItem> 就可以做到这一点。