我有一个与此问题类似的问题,因为我无法将 Blazor EditForm 绑定到简单的列表。
为了将列表绑定到 EditForm,我是否遗漏了某些内容?
人物.cs
public class Person {
public List<string>? Names { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
EditForm1.razor 会产生编译时错误:Cannot assign to 'item' because it is a 'foreach iteration variable'。我明白了 - 迭代器是只读的,所以我可以理解这一点。
<EditForm Model="@person">
@if (person is not null) {
@if (person.Names is not null) {
@foreach (var item in person.Names) {
<InputText @bind-Value="@item" />
}
}
}
</EditForm>
Run Code Online (Sandbox Code Playgroud)
因此,根据引用的 Microsoft 文档,我对其进行了重构。
EditForm2.razor 编译并运行...直到 person.Names 实际上具有值。然后它抛出ArgumentException: The provided expression contains a InstanceMethodCallExpression1 …