【发布时间】:2021-01-01 18:48:49
【问题描述】:
我正在尝试对 Blazor InputFile 组件中的一些用户选择的文件进行数据绑定,特别是每个 ToDoItem 的 AssociatedFiles 属性。这不起作用,因为AssociatedFiles 始终是null。
这是我的剃须刀组件:
@page "/todo"
@using BlazorPlayground.Data
<h3>Todo List</h3>
Total items: @todos.Count()
<br />
Done: @todos.Count(x => x.IsDone) out of @todos.Count()
<br />
Not Done: @todos.Count(x => !x.IsDone) out of @todos.Count()
<br />
<ul>
@foreach (var todo in todos)
{
<li>
<input type="checkbox" @bind="todo.IsDone" />
<input @bind="todo.Title" />
<input type="datetime-local" @bind="todo.DateAdded" />
<InputFile OnChange="@OnFileSelected" @bind-value="todo.AssociatedFiles" multiple />
</li>
}
</ul>
<input placeholder="Write something to do..." @bind="newTodo" />
<button @onclick="AddTodo">Add Todo Item</button>
@code {
private IList<TodoItem> todos = new List<TodoItem>();
private string newTodo;
private void AddTodo()
{
if (!String.IsNullOrWhiteSpace(newTodo))
{
todos.Add(new TodoItem(newTodo));
newTodo = "";
}
}
private void OnFileSelected(InputFileChangeEventArgs e)
{
}
}
这是我的ToDoItem 班级:
namespace BlazorPlayground.Data
{
public class TodoItem
{
public string Title { get; set; }
public bool IsDone { get; set; }
public DateTime DateAdded { get; set; }
public IReadOnlyList<IBrowserFile> AssociatedFiles {get; set;}
public TodoItem(string title)
{
this.Title = title;
this.IsDone = false;
this.DateAdded = DateTime.Now;
}
}
}
顺便说一句,您可能已经注意到这是Blazor todo list app tutorial 的扩展。
【问题讨论】: