Я использую пример из этого устаревшего видео Представляем компоненты Razor в ASP.NET Core 3.0 - Даниэль Рот .
Исходный код выглядит следующим образом:
@page "/todo"
<h1>Todo (@todoList.Count(todo => !todo.IsDone))</h1>
<ul>
@foreach (var todo in todoList)
{
<li>
<input type="checkbox" @bind="todo.IsDone" />
<input @bind="todo.Title" />
</li>
}
</ul>
<input placeholder="Do something..." @bind="newTodo"/>
<button @onclick="AddTodo">Add</button>
@code {
IList<TodoItem> todoList = new List<TodoItem>();
string newTodo;
void AddTodo()
{
if (!String.IsNullOrEmpty(newTodo))
{
todoList.Add(new TodoItem { Title = newTodo });
newTodo = null;
}
}
}
Я добавил универсальный класс ICollection для хранения экземпляров класса TodoItem и изменил код здесь:
@page "/todo2"
<h1>Todo2 (@todoColl.Count(todo => !todo.IsDone))</h1>
<ul>
@foreach (var todo in todoColl)
{
<li>
<input type="checkbox" @bind="todo.IsDone" />
<input @bind="todo.Title" />
</li>
}
</ul>
<input placeholder="Do something..." @bind="newTodo" />
<button @onclick="@(e => { todoColl.Add(newTodo); newTodo = null;})">Add</button>
@code {
string newTodo;
TodoCollection todoColl = new TodoCollection();
}
Могу ли я избавиться от оставшихся двух операторов в разделе @code, чтобы добиться полного выделения кода?Буду признателен за любые предложения по улучшению.